Newsgroup: it.comp.lang.visual-basic
Titolo: per super-mega-esperti di VBA Excel (quesito molto interessante)

salve,
ho bisogno di effettuare la seguente operazione con VBA di Excel.
devo sapere, in un dato intervallo, in che punto c'è una cella che ha come
valore un errore (ad es., un numero diviso zero).
ho pensato di utilizzare le funzioni del foglio di lavoro, dal modulo VBA,
con WorksheetFunction.
ho provato sia con Match (Confronta), sia con Lookup (Cerca), ma non
funziona.
entrambe queste funzioni hanno due argomenti, e cioè il valore cercato, e
l'intervallo in cui cercarlo.
quello che vorrei sapere è come devo impostare il valore da cercare quando
si tratta di un errore.
ho provato con xlErrDiv0, CVErr(xlErrDiv0), "Errore 2007", ma in nessun caso
funziona.
il bello è che se uso CountIf (ContaSe), per vedere QUANTE celle sono degli
errori DIV 0, allora funziona!!!!! poi però non riesco a specificare QUALI
celle hanno questo errore...
secondo voi come devo fare?
grazie
mario

 wrote in message
news:sl8%5.3615$5k3.1...@twister2.tin.it...

Invece mi sembra una banalita'.
Non programmo in vba per xl, pero' dici che con una CountIf riesci a
saperlo.
Quindi: cicli sulle celle che ti interessano, applicando il CountIf sul
range della singola cella e opla' ! Se la risposta e' = 1 allora quella
cella ha un errore div 0, altrimenti l' errore non c'e'.
Ciao
Aldo

ho provato anche, dall'interno di una Sub, a utilizzare il metodo Find, ma
anche lì non so cosa devo mettere come argomento What, e cioè cosa
cercare... se xlErrDiv0 o CVErr(xlErrDiv0).
aiutatemi... sono proprio in panne... ::))))))
mario

 cella ha un errore div 0, altrimenti l' errore non c'e'.
ehm... era sottinteso SENZA fare For... Next... perche non so se hai mai
usato VBA per Excel, ma su grossi intervalli se mi metto a fare For...Next
si impalla per troppo tempo...
se volevo usare For...Next allora bastava fare un ciclo di tutte le celle
(ad es., delle celle selezionate, o passate come argomento a una funzione e
vedere se contenevano un errore con IsError ad es o con CVErr(), ma io ho
bisogno di saperlo senza fare nessun ciclo...
sembra strano, ma Excel in alcune funzioni riconosce CVErr(xlErrDiv0) e in
altre non lo accetta... eccheccavolo...
bye bye
mario

> MarioH:

Io lo dico sempre che prima di metter mano al VB di Excel bisogna conoscere
Excel... ma nessuno mi ascolta. :-)
Perche', vedi, se lo sai fare con Excel allora sai farlo anche col VB di
Excel. E il registratore di macro aiuta...
C1: =A1/B1
Ricopia in basso tale formula nell'intervallo C2:C10.
Poniamo che tu voglia sapere quali celle, nell'intervallo A4:C7, contengano
un valore di errore. Seleziona tale intervallo poi:
    Modifica
    > Vai a...
      Speciale...
        . Formule
          [_] Numeri
          [_] Testo
          [_] Valori logici
          [V] Errori
        Ok
Usando il registratore di macro otteniamo:
Option Explicit
Sub Macro1()
'
' Macro1 Macro
' Macro registrata il 18/12/2000 da Maurizio Borrelli
'
'
    Selection.SpecialCells(xlCellTypeFormulas, 16).Select
End Sub
Da cui deriviamo il codice che ci interessa:
Option Explicit
Public Sub Prova1( _
)
  Dim rngErr As Excel.Range
  With Excel.Application.ActiveSheet
    For Each rngErr _
    In .Range("A4:C7") _
       .SpecialCells(xlCellTypeFormulas, 16)
      With rngErr
        Debug.Print .Address
      End With: Set rngErr = Nothing
    Next
  End With
End Sub
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

miiiiiiii sei un geniaccio... sarai sempre il mio punto di riferimento
quando nonso fare qualcosa in Excel...
peccato però che non funzioni... ma per colpa mia...
mi spiego. in realtà conosco 1000 modi per fare quello che mi serve, usando
VBA di Excel. il problema è che tutto questo DEVE obbligatoriamente essere
fatto da una funzione e non da una sub... e quindi nella funzione non posso
usare metodi e non posso utilizzare il tuo sistema, peraltro davvero
interessante...
da una sub l'ho provato e funziona, ma da una function ovviamente salta e
non combina niente...
cmq credo di aver trovato il sistema per risolvere il problema, solo che
avrò bisogno di altri consigli... a approfitterò della vs esperienza...
grazie 1000 e ciao
mario

 wrote in message
news:91kofn$4k5i4$1...@ID-52090.news.dfncis.de...
...(wide cut)...
Grazie Mauri :-))
A forza di leggere le tue risposte finiro' per conoscere xl anche senza
aprirlo !
Ciao
Aldo