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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top