我正在尝试编写VBA代码的平安,这些代码将从表中过滤所选月份。如果用户没有给出月份问题的答案,我希望在那里循环一直在询问问题,直到给出答案。即使只有作为01,02,03,04,05,06,07,08,09,10,11,12的优选,但我只是VBA的初学者。

我已经写了以下代码,到目前为止:

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
.

但它在

中留给我“类型不匹配”错误
Do While bdaymonth Is "0"
.

我已经尝试了一些方式。如果我尝试这个,我会得到一个“必需错误”:

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
.

我很新的是VBA编程,你们有些人可以给我一些指示我出错的地方吗?

有帮助吗?

解决方案

你错误地比较字符串。你应该这样做:

Do While bdaymonth = "0"
.

i.e。使用=,而不是生成的icoticetagcode。

此外,当您想将字符串与“null”进行比较时,您应该执行以下操作:

Do While bdaymonth = vbNullString
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top