Public Bersaglio As Range
Public lastCaption As String
Public Const Centralina = "Foglio1"
e la testo modificando la routine scrivi:
Sub scrivi(testo As String, etichetta As String)
lastCaption = Bersaglio.Formula
Bersaglio.FormulaR1C1 = testo
MsgBox lastCaption
End Sub
ottenendo una messageBox con il nome "uscente": quindi il procedimento funziona.Abbiamo quindi un valore uscente e un valore entrante.
Su questi bisognerà fare operazioni opposte: per il valore uscente, trovandolo sulla ListaNomiMese, bisognerà ridurre di 1 il valore dei turni, mentre per il valore entrante bisognerà aumentarlo di 1.
Abbozziamolo: Trovare il valore uscente nella lista nomi. Solito test dei colori...
Sub conta()
Dim trovato As Range
Set trovato = Range("ListaNomiMese").Find(lastCaption)
trovato.Interior.Color = vbCyan
End Sub
che dimostra il corretto funzionamento della cosa.Una migliore denominazione:
Sub conta()
Dim vecchioTesto As Range
Set vecchioTesto = Range("ListaNomiMese").Find(lastCaption)
vecchioTesto.Interior.Color = vbCyan
End Sub
Bene.... Ho elaborato tutto! Ecco la routine definitiva (in fase di sperimentazione, speriamo che funzioni)
Sub conta()
Dim vecchioTesto As Range, nuovoTesto As Range
If lastCaption <> "" Then
Set vecchioTesto = Range("ListaNomiMese").Find(lastCaption)
vecchioTesto.Offset(0, 2).Formula = vecchioTesto.Offset(0, 2).Formula - 1
End If
If Bersaglio.Formula <> "" Then
Set nuovoTesto = Range("ListaNomiMese").Find(Bersaglio.Formula)
nuovoTesto.Offset(0, 2).Formula = Val(nuovoTesto.Offset(0, 2).Formula) + 1
Set vecchioTesto = Nothing
Set nuovoTesto = Nothing
lastCaption = ""
End If
End Sub
Molto più rapida!E ce la analizzeremo per bene...
Nessun commento:
Posta un commento