Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel- Verificare la presenza di #N/D

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel- Verificare la presenza di #N/D

Postdi Flash30005 » 05/02/09 03:13

A chiunque può darmi una "dritta"

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
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: Excel- Verificare la presenza di #N/D

Postdi Anthony47 » 05/02/09 15:42

Prova con queste nella tua macro:
Codice: Seleziona tutto
On Error GoTo Gerr
aaa = Application.WorksheetFunction.Sum(Range("A1:A6000"))
'Continua qui se nessun errore
'
'   
   
Gerr:
'Salta qui se ci sono errori


Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel- Verificare la presenza di #N/D

Postdi Flash30005 » 05/02/09 16:56

Ciao Anthony,
Si è Ok, solo che nel frattempo ho "sfruttato" alcune peculiarità dell'altra funzione: l'appetito, come si suol dire, viene mangiando...
Ora mi trovo così
Codice: Seleziona tutto
Sub AssConto()
Sheets("Effettivo").Select
Rtot = Range("A" & Rows.Count).End(xlUp).Row
If FlagErr > 0 Then GoTo Ripristino
AvvioNo = Worksheets("Effettivo").Range("A1")
If AvvioNo = "TestoMio" And FlagErr = 0 Then Exit Sub
    'Application.Visible = False

............................................................
prima parte del programma
(con creazione colonna A e nome "TestoMio" in A1)
.............................................................

   Ripristino:
    FlagErr = 0
    Dim MyVar, MyCheck, Message, Title, Default, MyValue
    For Each c In Worksheets("Effettivo").Range("A2:A" & Rtot)
      MyVar = c.Value
      MyCheck = IsNumeric(MyVar)
      If MyCheck = False Then
          FlagErr = FlagErr + 1
          Range("D" & c.Row).Select
          Message = "Inserire dato mancante o errato"
          Title = "Inserimento dati"
          MyValue = InputBox(Message, Title, , 100, 100)
          Range("D" & c.Row).Value = MyValue
      End If
    Next c
If FlagErr > 0 Then
    Range("A2").Select
Exit Sub
End If
    Columns("A:A").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
    Application.CutCopyMode = False
    Application.Visible = True

    Range("A2").Select
    Call GrPivot
    Call TotaliGr
End Sub

In pratica ora oltre a trovare la riga dove manca il dato posso inserire con InputBox il valore nella cella (le formule nella colonna A sono ancora attive, il copia-incolla speciale valori lo eseguo alla fine) e procedo alla ricerca di altri eventuali dati mancanti.
Alla fine basta rilanciare di nuovo la macro AssConto che rieffettua un ulteriore controllo (ci sono due tipi di errori e uno dei due non è sempre possibile modificarlo in "tempo reale")
e procede al completamento con TabellaTotali e Pivot

Che ne dici?
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel- Verificare la presenza di #N/D

Postdi Anthony47 » 05/02/09 18:51

Quindi hai scelto di controllare con la formula sul foglio che non ci siano errori, che per me e' la scelta migliore: fare con macro solo quello che non si riesce a fare con le funzioni native.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Excel- Verificare la presenza di #N/D":


Chi c’è in linea

Visitano il forum: enrico43, Marius44 e 7 ospiti