Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Realizzare un "effetto passaggio"...

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

Realizzare un "effetto passaggio"...

Postdi Carletto Ribolla » 29/11/20 21:12

Ciao a tutti!

Stiamo osservando dalla finestra di un oblò dell’acqua pura azzurro cristallino che scorre con regolarità da sinistra verso destra all’interno di un tubo trasparente.
Ora immaginiamo qualcuno che all’inizio del tubo decida di sporcarla iniettando una piccola quantità di colore rosso.
Ciò che da lì a poco osserveremo dall’oblò sarà: l’arrivo; l’attraversamento; la scomparsa della contaminazione.

Domanda: è possibile replicare l’effetto con un codice VBA?

Un Grazie in anticipo per eventuali suggerimenti.
Avatar utente
Carletto Ribolla
Newbie
 
Post: 9
Iscritto il: 27/07/19 21:03

Sponsor
 

Re: Realizzare un "effetto passaggio"...

Postdi Anthony47 » 29/11/20 21:48

Mah, excel non e' proprio lo strumento piu' di moda per gli effetti speciali...
Potresti "imbrogliare" l'osservatore creando un foglio contenente una immagine molto larga; poi col vba fai lo scroll del foglio quindi l'osservatore potrebbe vedere (se l'immagine "adatta" lo contemplava) prima un flusso pulito, poi un flusso man mano piu' sporco, poi man mano piu' pulito, poi di nuovo pulito. Ma il vba fa solo scorrere l' immagine che tutte queste cose le deve avere gia' incluse.
Tieni le dimensioni delle colonne molto piccole, cosi' l'immagine teoricamente scorrera' piu' fluidamente; ma l'effetto finale lo scoprirai tu, e soprattutto potrebbe variare da pc a pc in funzione del tipo di scheda grafica di cui dispongono.

Forse ti aspettavi che ti avremmo illuminati, invece ti abbiamo solo acceso un lumicino...

Fai sapere, siamo curiosi!
Avatar utente
Anthony47
Moderatore
 
Post: 17362
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Realizzare un "effetto passaggio"...

Postdi Carletto Ribolla » 06/12/20 17:52

C’è voluto un po’ prima di riuscire nell’intento e… ora eccomi a documentare.
In sintesi un brevissimo video -mi si perdoni per la qualità- e i relativi codici.
NB: ovviamente non è tutta farina del mio sacco… mi sono limitato a comporre "un puzzle di codici che funziona" :)

https://www.4shared.com/folder/s5lGfJzb/_online.html

Codice: Seleziona tutto
Public CICLO As Boolean

Codice: Seleziona tutto
Public Sub AVVIA()
If CICLO = True Then
     With Range("D2:D26")
        N = .Count
         Range(.Cells(1), .Cells(N)).Copy .Cells(0)
        .Cells(N) = .Cells(0)
     End With
VIA
End If
End Sub

Codice: Seleziona tutto
Public Sub VIA()
Application.OnTime Now + TimeValue("00:00:01"), "AVVIA"
CICLO = True
End Sub

Codice: Seleziona tutto
Public Sub FERMA()
CICLO = False
End Sub
Avatar utente
Carletto Ribolla
Newbie
 
Post: 9
Iscritto il: 27/07/19 21:03

Re: Realizzare un "effetto passaggio"...

Postdi Anthony47 » 07/12/20 02:21

Grazie per la condivisione.
Io pero' non sono riuscito a scaricare il file, mi pare sia possibile solo dopo registrazione
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17362
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Realizzare un "effetto passaggio"...

Postdi Carletto Ribolla » 07/12/20 05:41

... c'è qui un modo differente per poterlo condividere?
Grazie!
Avatar utente
Carletto Ribolla
Newbie
 
Post: 9
Iscritto il: 27/07/19 21:03

Re: Realizzare un "effetto passaggio"...

Postdi Ricky0185 » 07/12/20 09:11

Leggi qui e usa filedropper, però 180 Mb...li ....
Ricky0185
Utente Junior
 
Post: 59
Iscritto il: 10/12/19 20:38

Re: Realizzare un "effetto passaggio"...

Postdi raimea » 07/12/20 11:46

ciao
confermo , senza registrazione non permette di scaricare

ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1266
Iscritto il: 11/02/10 07:33
Località: lago

Re: Realizzare un "effetto passaggio"...

Postdi Ricky0185 » 07/12/20 16:36

Comunque è qui, ma è un mp4 di 180 Mb. Carletto, meglio aver inserito direttamente il file Excel.
Ciao
Ricky0185
Utente Junior
 
Post: 59
Iscritto il: 10/12/19 20:38

Re: Realizzare un "effetto passaggio"...

Postdi Carletto Ribolla » 07/12/20 16:37

Eccolo, alleggerito come gentilmente suggeritomi da Ricky0185 ;)
... e un saluto a tutti.

http://www.filedropper.com/scorrimento
Avatar utente
Carletto Ribolla
Newbie
 
Post: 9
Iscritto il: 27/07/19 21:03

Re: Realizzare un "effetto passaggio"...

Postdi Anthony47 » 07/12/20 20:05

Avevo capito una cosa diversa, tipo l'effetto che si vede in questo file:
https://www.dropbox.com/s/7kmqxnlionqtq ... .xlsm?dl=0

Vai su Foglio1. Premendo START si avviera' lo scorrimento orizzontale, andata e ritorno.

Il codice della relativa macro:
Codice: Seleziona tutto
Sub Flow()
Dim cTLeft As Long, cWW As Long, picW As Single, colW As Single
Dim ColNum As Long, I As Long, cStep As Long
Dim Sta As Long, Sto As Long, Ste As Long
'
cTLeft = ActiveWindow.VisibleRange.Cells(1, 1).Column
cWW = ActiveWindow.VisibleRange.Columns.Count
Debug.Print ActiveWindow.VisibleRange.Address, ActiveWindow.VisibleRange.Columns.Count
picW = Foglio1.Shapes(1).Width
colW = Range("A1").Width
ColNum = picW / colW
'
'Range("A1") = 50
Sta = 1
Sto = ColNum - cWW + 20
Ste = 1
For j = 1 To 2      'a dx poi a sx
    For I = Sta To Sto Step Ste
    DoEvents
        Application.Goto Cells(1, I), True
        Sleep (101 - Range("A1").Value)
    Next I
    Sta = I
    Sto = 1
    Ste = -1
Next j
End Sub

Ovviamente il risultato e' determinato dall'immagine inserita nel foglio, mentre la larghezza delle colonne a 9 pixel consente una certa fluidita' di scorrimento.
La barra di scorrimento consente di aumentare o ridurre la velocita'

In Foglio2 ho aggiunto "l'effetto finestra", tramite una seconda immagine in cui la parte "finestrata" e' impostata come "colore trasparente".

Purtroppo ogni PC avra' una resa diversa.

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

Re: Realizzare un "effetto passaggio"...

Postdi Carletto Ribolla » 09/12/20 16:34

Ciao Anthony... che dire?...
Avevo chiesto se fosse stato possibile replicare l’effetto con un codice VBA, anche se ero convinto che non si riuscisse ad arrivare a tanto. Quando ho visto scorrere l'immagine sono rimasto senza parole;... e tuttora mi mancano. Credimi!

Hai fatto qualcosa che è andato oltre le mie aspettative e la capacità di comprendere anche solo cosa sta alla base dell'architettura di quel codice.

Ti ringrazio per la disponibilità e... per le macro "Io speriamo che me la cavo" ;)

Alla prossima. Ciao!
Avatar utente
Carletto Ribolla
Newbie
 
Post: 9
Iscritto il: 27/07/19 21:03

Re: Realizzare un "effetto passaggio"...

Postdi Anthony47 » 09/12/20 17:29

Ti spego a parole…
Ho preso una foto panoramica e l'ho importata in A1 di Foglio1.
Ho impostato "non ridimensionare ne' spostare modificando le celle" e "non matenere le proporzioni".
Ho poi allargato l'immagine in modo che fosse larga molto piu' di una schermata
Ho impostato la larghezza delle celle su pochi pixel, tolto la visualizzazione delle intestazioni, tolta la visualizzazione della griglia

Ora se selezioni A1 (non l'immagine) e sposti la selezione verso destra, a un certo punto vedrai che l'immagine sembra scorrere; lo stesso effetto ce l'hai scorrendo la finestra con la barra di scorrimento orizzontale

Ecco, la macro fa solo questa cosa: selezionare una cella e poi la successiva, la successiva, etc; con l'unica differenza che invece di partire da A1 parto dall'ultima colonna visualizzata, cosi' l'immagine comincia subito a scorrere.
Volendo scorrere fino alla fine dell'immagine prima calcolo quante colonne e' larga l'immagine e poi uso quel numero nel ciclo For I = Sta To Sto Step Ste
Volendo fare un ciclo verso la fine e uno all'indietro verso l'inizio ho inserito il cisclo suddetto in un ciclo For j = 1 To 2

Volendo tenere sempre visibile il comando della velocita' ho inserito sul modulo vba di Foglio1 una macro di Worksheet_SelectionChange che ha l'unico scopo di riposizionare quel comando per tenerlo sempre a portata di click.

Il Foglio2 e' la copia di Foglio1, con l'aggiunta dell'immagine "finestra"
L'immagine e' una di quelle di Windows, e l'ho importata "sopra" l'immagine del cielo, in modo da coprire l'immagine di fondo. Poi, comandi di formattazione delle immagini, ho impostato il bianco della finestra come "colore trasparente"; ora l'immagine del cielo si vede attraverso la finestra.
Rifaccio scorrere la selezione verso destra come prima e il gioco e' quasi fatto... Quasi perche' bisogna riposizionare l'immagine della finestra per tenerla sempre sulla parte visibile.
Questo lo faccio con la stessa Worksheet_SelectionChange che prima riposizionava solo il controllo di velocita', ora deve fare anche il riposizionamento della finestra: 4 istruzioni invece che 2

Questo e' tutto
Quindi ...buon approfondimento

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

Re: Realizzare un "effetto passaggio"...

Postdi Anthony47 » 09/12/20 23:18

Con qualche prova in piu' sono arrivato a questa seconda versione: lo scorrimento mi sembra piu' fluido e il controllo velocita' piu' efficace
https://www.dropbox.com/s/n9e6x41sblotj ... .xlsm?dl=0

Anche in questa versione in Foglio1 c'e' la dimostrazione dello scorrimento avanti e indietro e in Foglio2 c'e' lo scorrimento visto "dalla finestra".
Tecnicamente faccio lo scrolling del foglio verso destra "quanto basta", posiziono l'immagine di sfondo e il resto, poi riposiziono l'immagine verso sx (per dare l'effetto dello scorrimento verso destra), poi torno indietro alla posizione originale.

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

Re: Realizzare un "effetto passaggio"...

Postdi Ricky0185 » 10/12/20 12:26

Ce la fai a farlo girare con il 2003?
Ricky0185
Utente Junior
 
Post: 59
Iscritto il: 10/12/19 20:38

Re: Realizzare un "effetto passaggio"...

Postdi Anthony47 » 10/12/20 18:09

Ambedue i file pubblicati si sviluppano su piu' di 256 colonne, quindi non sono gestibili sulle vecchie versioni.

Ho rivisto "il file rivisto" (cioe' il DEMO_2) in ottica XL2003, e ho ulteriormente cambiato l'algoritmo di funzionamento.
Il nuovo file, che e' compatibile anche con XL2007 e superiori e' qui: https://www.dropbox.com/s/byj1z3xod3b82 ... S.xls?dl=0

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

Re: Realizzare un "effetto passaggio"...

Postdi Ricky0185 » 11/12/20 09:20

Adesso posso vederlo. Mi interessava perchè sto preparando qualcosa per Natale sulla base di questo file, ma è un lavorone preparare un numero di immagini (grafici) sufficiente a dare fluidità al movimento di persone.
Saluti
R
Ricky0185
Utente Junior
 
Post: 59
Iscritto il: 10/12/19 20:38


Torna a Applicazioni Office Windows


Topic correlati a "Realizzare un "effetto passaggio"...":


Chi c’è in linea

Visitano il forum: Nessuno e 40 ospiti