Contatore automatico macro VBA Excel 2007

giovedì 02 agosto 2012 - 23.51

dukati Profilo | Newbie

Un saluto a tutti.
Vorrei realizzare una macro in excel che al modificarsi del valore presente in una cella che può avere un valore di 0 o 1 vada automaticamente (senza che io debba avviare di nuovo la macro) a sommare in un'altra cella il valore della prima.
Per essere più chiaro se nella cella A1 in una giornata per 5 volte si passa dal valore di 0 a quello di 1 nella cella B1 quella con il contatore a fine giornata dovrei avare 5.
Sicuramente per chi è esperto è un gioco da ragazzi ma per me che non ne capisco e che diverse ore (non dico quante per non farmi prendere in giro) non ci sono ancora riuscito e per questo chiedo aiuto sul forum.
Vorrei sapere anche se è possibile avere un contatore di tempo che conti per quanti secondi in tutta la giornata nella cella A1 c'è stato il valore 1.
Grazie in anticipo a chi mi risponderà.
Ciao

angelotv Profilo | Guru

scusa una domanda, ma chi è che va a cambiare da 0 a 1 il valore della cella A1? forse è più semplice "agire" in quel momento...
by Angelo
www.angelopasetto.t

dukati Profilo | Newbie

angelotv innanzitutto grazie per l'interessamento.Il valore in A1 passa da 0 ad 1 in base ad una funzione "SE" che ho impostato sul foglio excel che si basa su dei valori che excel riceve dall'esterno tramite DDE, quindi tutto avviene in automatico come in automatico vorrei che la macro conti il numero di volte che nella cella compare 1 ed il numero di secondi che in cui nella cella dura l'1 prima che il valore nella cella torni, in base ai dati ricevuti dal DDE che va a modificare il risultato della funzione "SE", a 0.
GRazie in anticipo a chi mi risponderà.
Ciao

angelotv Profilo | Guru

In questo caso verosimilmente non ti conviene agire sulla "dde"; lo strumento che devi utilizzare è l'evento CHANGE (in excel 2003 esiste una Sub Worksheet_Change che ha come argomento "(ByVal Target As Range)" ; ecco di seguito un esempio di utilizzo copiato da un mio foglio excel.

Calcola è una funzione che fa il disastro...
Scost_Dflt RowIni e RowFin sono variabili globali
ColPerm è una costante.

ecco la funzione.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Worksheet_Change '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Posiz As Range
Dim MyRow As Integer, MyCol As Integer
' MsgBox Target.Value & vbCrLf & Target.row & vbCrLf & Target.Column <------- se togli il commento da questa riga vedrai un msgbox esplicativo
MyRow = Target.Row
MyCol = Target.Column

If Scost_Dflt <> 0 And MyCol = ColPerm And MyRow >= RowIni And MyRow <= RowFin Then
Call Calcola(Scost_Dflt, True)
End If

End Sub

buon lavoro!!
by Angelo
www.angelopasetto.t

FelixGale Profilo | Newbie

Vorrei sapere anche se è possibile avere un contatore di tempo che conti per quanti secondi in tutta la giornata nella cella A1 c'è stato il valore 1.
Grazie in anticipo a chi mi risponderà.




------------------------------
http://www.buydvdworld.com/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5