In un Modulo nuovo del vba inserisci questo codice:
- Codice: Seleziona tutto
Public NextT As Date
Const myFlag As String = "Z1" '<<< Cella libera che sara' usata
Const mySheet As String = "Foglio1" '<<< Foglio su cui si lavora
Sub ReRedo()
'
Dim myVarr(), myScroll As Long, NextR As Long
myScroll = 0 '<<< Il numero di valori da visualizzare, accodando; 0= "a oltranza"
If myScroll > 0 Then ReDim myVarr(1 To myScroll)
'
With ThisWorkbook.Sheets(mySheet)
NextR = .Cells(Rows.Count, "V").End(xlUp).Offset(1, 0).Row
.Cells(NextR, "V") = .Range("R2").Value
If NextR >= (myScroll + 1) And myScroll > 0 Then
myVarr = Cells(3, "V").Resize(myScroll, 1).Value
Cells(2, "V").Resize(myScroll + 1, 1).Value = myVarr
Cells(myScroll + 2, "V").Resize(100, 1).ClearContents
End If
If .Range(myFlag) <> 0 Then
NextT = Now + TimeValue("00:00:05") '<<<1 periodo (hh:mm:ss)
Application.OnTime NextT, "ReRedo"
.Range(myFlag).Value = NextT
End If
End With
End Sub
Sub Avvia()
Sheets(mySheet).Range(myFlag).Value = Now()
Call ReRedo
End Sub
Sub Stoppa()
Sheets(mySheet).Range(myFlag).ClearContents
Application.OnTime NextT, "ReRedo", , False
End Sub
Personalizza le righe iniziali marcate <<<, mantenendo la sintassi.
Poi nel frame "Progetto-VBAProject" dell' editor delle macro, identifica la voce ThisWorkbook (oppure Questa_cartella_di_lavoro) e fai doppioclick; nel modulo che si aprira' inserisci
- Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime NextT, "ReRedo", , False
End Sub
Vai sul foglio su cui lavori e inserisci due pulsanti (la versione piu' semplice la trovi in Ribbon /Sviluppo /Inserisci, Controlli Modulo) e gli associ le macro Avvia e Stoppa (ti verra' chiesto esplicitamente quale macro associare a ogni pulsante, mentre lo crei).
Quando vuoi avviare la storicizzazione del valore in R2 premi Avvia, quando vuoi fermarla premi Stoppa.
La raccolta avverra' ogni 5 secondi; puoi impostare un diverso timing modificando l' istruzione marcata <<<1.
I nuovi valori saranno accodati "a oltranza" in colonna V. Se pero' imposti per myScroll un valore superiore a 0 allora la macro accodera' fino a questo numero di valori, in modalita' "scrolling".
Scrolling significa che dopo un numero massimo di valori, tutti i valori scorrono all' indietro di 1 posizione, e il valore iniziale si perde (il grafico scorrera' verso sinistra); Rolling significa che raggiunto il numero massimo di valori i nuovi valori vanno in posizione 1, poi 2, etc (il grafico sara' come un ecg). Poiche' e' leggermente piu' incasinato da testare lo faremo solo se realmente necessario.
Ciao