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 Subottenendo 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 Subche 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 SubBene.
... 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 SubMolto più rapida!
E ce la analizzeremo per bene...
Nessun commento:
Posta un commento