Ho delle macro su un foglio di excel
nella colonna A (range variabile da A2 a Axxx supponiamo A6000; il valore me lo calcolo di volta in volta)
eseguo l'intera routine che ora suddivido in tre fasi
fase 1) viene compilato il foglio1 nel quale ho la formula Cerca.Verticale in A che a volte non trovando il riferimento fornisce errore #N/D o #Value ed è giusto che sia così
Fase 2) creazione di altri fogli
fase 3) creazione tabella Pivot
Vengono eseguite le tre fasi in sequenza senza interruzione del programma e a volte l'utente si ritrova la tabella di Pivot con quell'errore, sa che deve aggiungere i valori mancani e ripete l'intero codice dall'inizio.
Per evitare di arrivare alla fase 3 con valori mancanti pensavo di intercettare quell'errore con il codice Vba in maniera tale da fermare il programma alla fase 1 e far intervenire l'utente ad inserire quei valori.
Come formula di excel l'ho realizzata così
- Codice: Seleziona tutto
=SE(VAL.ERRORE(SOMMA(A2:A6000)="VERO");"Errore";1)
ma non vorrei utilizzare celle di appoggio e quindi mentre scrivevo qui cercavo una soluzione e con l'help ho realizzato questa macro
- Codice: Seleziona tutto
Sub Macro2()
Dim MyVar, MyCheck
For Each c In Worksheets("Foglio1").Range("A1:A6000")
MyVar = c.Value
MyCheck = IsNumeric(MyVar)
If MyCheck = False Then
MsgBox "Errore" ' e esco
Exit Sub
End If
Next c
End Sub
Funziona, ma penso ci sia "qualcosa" di molto più semplice, sbaglio?
Ciao