Frage

Ich versuche, ob eine ganze Zahl zu erfassen, wurde festgelegt, und wenn nicht, überspringen die meisten der Code in der Schleife (mit einer if-Anweisung). Hier ist, was ich habe so für.

Do While hws.Cells(r, 9).Value <> ""
    On Error Resume Next
    ar = Null
    ar = aws.Range("A:A").Find(hws.Cells(r, 2).Value).Row
    If Not IsNull(ar) Then
  'work with ar'
    End If
    r = r + 1
Loop

Allerdings, wenn ich es laufen, hat ar = Null Probleme. Er sagt: "Ungültige Verwendung von Null".

War es hilfreich?

Lösung

einen Bereich finden Rückgabe:

Dim rf As Range
With aws.Range("A:A")
    Set rf = .Find(hws.Cells(r, 2).Value)
    If Not rf Is Nothing Then
        Debug.Print "Found : " & rf.Address
    End If
End With

- http://msdn.microsoft.com /en-us/library/aa195730(office.11).aspx

Andere Tipps

Variablen als Integer definiert ist, kann nicht Null in VBA sein. Sie müssen einen anderen Weg finden zu tun, was Sie wollen. zB einen anderen Datentyp verwenden oder eine magische Zahl verwendet null, um anzuzeigen (zB -1).

In Ihrem Beispiel-Code wird entweder ar einen Long-Wert zugewiesen werden (Range.Row ist ein Long) oder es wird einen Fehler werfen.

verwenden nur eine Variante und isempty:

Dim i

If IsEmpty(i) Then MsgBox "IsEmpty"
i = 10

If IsEmpty(i) Then
   MsgBox "IsEmpty"
Else
   MsgBox "not Empty"
End If
i = Empty
If IsEmpty(i) Then MsgBox "IsEmpty"
'a kind of Nullable behaviour you only can get with a variant
'do you have integer?
Dim j as Integer
j = 0
If j = 0 Then MsgBox "j is 0"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top