Condividi:        

Due macro in unica sub su stesso foglio

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Due macro in unica sub su stesso foglio

Postdi Ricky0185 » 05/12/20 22:50

Buona sera, nel file allegato, sono presenti 2 errori di runtime: il 5 ed il 1004. Sono riuscito a "congelarli" ed il tutto funziona, però se qualcuno mi aiuta ad eliminarli sarei contento.
Sono 2 macro su stesso foglio, ma in realtà una chiama l'altra e sono 2 macro di movimento, certo un pò arzigogolate.
Vorrei che invece 2 macro "di movimento", come questa, per prova con una sola immagine, possano essere attivate con una sola macro su stesso foglio. Si tratta comunque sempre di immagini che dovrebbero muoversi da sinistra a destra ma di forme e velocità diverse. Speriamo che nel file MoveRic non venga il fiatone ad Alfredo.
Un grazie ed una buona Domenica con mascherina
R
Ricky0185
Utente Senior
 
Post: 272
Iscritto il: 10/12/19 20:38

Sponsor
 

Re: Due macro in unica sub su stesso foglio

Postdi Anthony47 » 06/12/20 01:37

Purtroppo gli effetti grafici in excel dipendono pesantemente dalle caratteristiche del processore grafico; non e' raro che effetti di movimento non siano resi o resi con effetto stroboscopico; in genere piu' veloci sono le macchine e piu' facile e' che l'effetto sia ...nascosto.

Intanto, invece di due set di codici che fanno le stesse cose puoi preparare una sub parametrizzata che gestisce l'immagine che indichi in fase di richiamo.
Poi, la tua Sub timeout rischia di farti aspettare la mezzanotte successiva, se la lanci proprio allo scoccare della mezzanotte; per questo quindi e' piu' saggio affidarsi alla funzione di sistema Sleep.
Infine non mi e' chiaro a cosa dovrebbe servire AppActivate, visto che sei su Excel e rimani sempre in Excel. Comunque ricordo che c'e' un differente comportamento tra le versioni XL2003 e XL2013 (non ricordo il comportamento di XL2007 e 2010); per questo in genere anche per la gestione delle finestre prefisco affidarmi alle Api di sistema, ad esempio la Function SetFocusAPI (ma ce ne sono diverse con funzioni analoghe), che si richiama usando "hWnd" (l'handle della finestra).

Cio' detto, in un Modulo standard ho inserito:
Codice: Seleziona tutto
#If VBA7 Then       '!!! RIGOROSAMENTE IN TESTA A UN  MODULO STANDARD  !!!!
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

Sub PicRotate(ByRef ShpRef As Shape)            'Gestione parametrizzata della pic da ruotare
'
With ShpRef
    .Visible = True
    For rep = 1 To 360
        .Rotation = rep
        .Left = rep
        If .Top >= 30 Then
            .Top = 30
        Else
            .Height = rep
            .Width = rep
            Sleep 10
        End If
        Sleep 10
        DoEvents
    Next rep
End With
End Sub


Poi la Workbook_Open e' diventata
Codice: Seleziona tutto
Private Sub Workbook_Open()
Foglio1.Shapes("Immagine 2").Visible = False
Foglio1.Shapes("Immagine 1").Visible = False
MsgBox ("Chiedi a questo signore se vuoi una risposta certa."), vbInformation
PicRotate Foglio1.Shapes("Immagine 1")
Sleep 3000
Foglio1.Shapes("Immagine 1").Visible = False
MsgBox ("Oppure a questo."), vbInformation
PicRotate Foglio1.Shapes("Immagine 2")
Sleep 3000
MsgBox ("Oppure cerca su google")
End Sub


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19255
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Due macro in unica sub su stesso foglio":


Chi c’è in linea

Visitano il forum: Anthony47 e 37 ospiti