Declaratie probleem

Status
Niet open voor verdere reacties.

Theknurt

Gebruiker
Lid geworden
11 nov 2006
Berichten
130
Hallo mede Excellisten,

Ik heb de volgende probleemstelling aan de hand.

Ik haal allemaal (date)waarden uit een tabblad. Nu komt ie op dat tabblad de waarde "#N/B" tegen en VBA geeft een foutmelding 13.

Ik wil nu eigenlijk dat als hij deze waarde tegenkomt (of een andere foute waarde) deze word overgeslagen en dat hij doorgaat naar de volgende.

Ik dacht dat te doen met ActiveCell.Offset(I, 2 + X).Value = "#N/B", echter dat mislukte.

Code:
Range("a4").Select
    For I = 1 To Aantal
        ShTotaal.Activate
                Naam = ActiveCell.Offset(I, 0).Value
                For X = 1 To 32
                    If X = 25 Or X = 26 Or X = 27 Or X = 28 Then
                    Else
                        [B]If ActiveCell.Offset(I, 2 + X).Value = "#N/B" Then[/B]
                        Else
                        waarde(X) = ActiveCell.Offset(I, 2 + X).Value
                        End If
                    End If
                Next X
            Sheets(Naam).Activate
            If ActiveSheet.Name = "Niet Gesteld!" Then
            
            Else
            Range("B10").Select
                For X = 1 To 28
                    If X = 25 Or X = 26 Or X = 27 Or X = 28 Then
                        ActiveCell.Offset(1, X - 1) = waarde(X + 4)
                    Else
                        ActiveCell.Offset(1, X - 1) = waarde(X)
                    End If
                Next X
            End If
    Next I

Hebben jullie suggesties ???

p.s. waarde(X) word gedeclareerd als DATE.
 
Als ik van jou was, zou ik die lussen herschrijven. Zitten nogal wat "rare" stukken in.

Gebruik de SpecialCells in VBA, en maak je lus daar doorheen. Je kan daar opgeven dat je niet doorheen foutwaarden wil gaan.

SpecialCells is de analogie van F5 > Speciaal in Excel.

Wigi
 
Je zou de foutmelding #N/B eigenlijk sowieso moeten voorkomen via een formule, bijvoorbeeld:
Code:
=IF(ISNA(A1),"",A1)
(gebruik "ISNB()" voor de Nldse versie)

Als dat echter niet mogelijk/wenselijk is, dan kun je in VBA de ISERROR() functie gebruiken:
Code:
If IsError(Range("A1").Value) Then
        MsgBox "#N/A of een andere fout aangetroffen in cell A1"
    Else
        MsgBox "Geenfout aangetroffen in cell A1"
    End If
( "IsError()" is in de Nldse versie: "IsFout()" )
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan