Condividi tramite

CAncellare #N/D con vba

Anonimo
2014-10-09T13:15:38+00:00

Ciao a tutti,

ho provato a cancellare una serie di caselle #N/D da vba con il seguente script.

    For j = 3 To 19 Step 1

        For i = 11 To 38 Step 1

            If ActiveSheet.Cells(i, j).Text = "#N/D" Then

            ActiveSheet.Cells(i, j).Select

            Selection.ClearContents

            End If

        Next

     Next

Voi conoscete qualcosa di più veloce ??

Grazie mille

Alex

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2014-10-09T16:04:52+00:00

    Come lo posso inserire nel mio script?

    Grazie

    Volendo limitare l'intervallo di azione al tuo esempio ...


    Sub script()

    Dim rDaControllare As Range, rErrore As Range

      '--- intervallo con possibili errori da controllare

      With ActiveSheet

        Set rDaControllare = .Range(.Range("c11"), .Range("s38"))

      End With

      On Error Resume Next

      Set rErrore = rDaControllare.SpecialCells(xlFormulas, xlErrors)

      On Error GoTo 0

      If Not rErrore Is Nothing Then

        If MsgBox("Le celle con errori saranno cancellate. Continui?", vbInformation + vbYesNo, "Cancella errori") = vbYes Then

          rErrore.ClearContents

        End If

      End If

    End Sub


    La risposta è stata utile?

    0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2014-10-09T14:42:11+00:00

    ...

    Voi conoscete qualcosa di più veloce ??

    Grazie mille

    Alex

      Dim rng As Range

      On Error Resume Next

      Set rng = ActiveSheet.Cells.SpecialCells(xlFormulas, xlErrors)

      On Error GoTo 0

      If Not rng Is Nothing Then rng.ClearContents

    La risposta è stata utile?

    0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2014-10-09T14:32:02+00:00

    Grazie.

    Mi cancella tutto ,perchè!!!??!

    Io non ho il tuo file. Partendo da un esempio dove devo controllare eventuali errori nel Range D1:F10 del Foglio1, questo codice elimina il contenuto della cella con errori. Lo stesso fa, in altro modo il codice postato prima.

    Public Sub m()

        Dim rng As Range

        Dim c As Range

        Set rng = ThisWorkbook.Worksheets("Foglio1").Range("D1:F10")

        For Each c In rng

            If IsError(c.Value) Then

                c.ClearContents

            End If

        Next

        Set c = Nothing

        Set rng = Nothing

    End Sub

    Se quello che vuoi è mantenere la formula/funzione nella cella in caso di errore e non visualizzare l'errore, devi farlo direttamente nella cella. Ad esempio:

    A1: 0

    A2: 0

    A3: =A1/A2  restituisce un errore nella cella. Se non voglio vederlo:

    A3: =SE(VAL.ERRORE(A1/A2);"";A1/A2)

    La risposta è stata utile?

    0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-10-09T14:19:05+00:00

    Grazie.

    Mi cancella tutto ,perchè!!!??!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-10-09T13:47:04+00:00

    Ciao a tutti,

    ho provato a cancellare una serie di caselle #N/D da vba con il seguente script.

        For j = 3 To 19 Step 1

            For i = 11 To 38 Step 1

                If ActiveSheet.Cells(i, j).Text = "#N/D" Then

                ActiveSheet.Cells(i, j).Select

    Selection.ClearContents

                End If

            Next

         Next

    If IsError(ActiveSheet.Cells(i, j)) Then

    ActiveSheet.Cells(i, j).ClearContents

    Nota. ActiveSheet.Cells(i,j).Select e Selection.ClearContents non servono.

    La risposta è stata utile?

    0 commenti Nessun commento