Fehler „VBA-Objekt erforderlich“ in der Do While-Schleife
-
21-12-2019 - |
Frage
Ich versuche, einen VBA-Code zu schreiben, der den ausgewählten Monat aus einer Tabelle filtert.Wenn der Benutzer keine Antwort auf die Monatsfrage gibt, möchte ich dort eine Schleife haben, die die Frage so lange stellt, bis eine Antwort gegeben wird.Selbst mit der einzigen Option 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12 vorzuziehen, aber ich bin nur ein Anfänger in VBA.
Ich habe bisher folgenden Code geschrieben:
Sub BE_NL_AddressBirthdaySplit()
'
' BE_NL_AddressBirthdaySplit Macro
'
' Keyboard Shortcut: Ctrl+w
'
Dim bdaymonth As String
bdaymonth = "0"
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=19, Criteria1:= _
"BE-PM Benelux BVBA"
bdaymonth = InputBox("What Month would you like to filter?", "Month of Birth")
Do While bdaymonth Is "0"
If bdaymonth = "" Then
result = MsgBox("You didn't specify the month", vbCritical, "No Month")
Else: ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=16, Criteria1 _
:=bdaymonth
End If
Loop
End Sub
Aber es gibt mir immer wieder die Fehlermeldung „Typkonflikt“.
Do While bdaymonth Is "0"
Ich habe einige Möglichkeiten ausprobiert.Wenn ich das versuche, erhalte ich die Fehlermeldung „Objekt erforderlich“:
Sub BE_NL_AddressBirthdaySplit()
'
' BE_NL_AddressBirthdaySplit Macro
'
' Keyboard Shortcut: Ctrl+w
'
Dim bdaymonth As Variant
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=19, Criteria1:= _
"BE-PM Benelux BVBA"
bdaymonth = InputBox("What Month would you like to filter?", "Month of Birth")
Do While bdaymonth Is Null
If bdaymonth = "" Then
result = MsgBox("You didn't specify the month", vbCritical, "No Month")
Else: ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=16, Criteria1 _
:=bdaymonth
End If
Loop
End Sub
Ich bin ziemlich neu in der VBA-Programmierung. Können mir einige von euch Hinweise geben, wo ich einen Fehler gemacht habe?
Lösung
Sie vergleichen die Zeichenfolgen falsch.Du solltest das tun:
Do While bdaymonth = "0"
d.h.verwenden =
und nicht Is
.
Wenn Sie eine Zeichenfolge mit „null“ vergleichen möchten, sollten Sie außerdem Folgendes tun:
Do While bdaymonth = vbNullString