vba对象循环时所需的错误
-
21-12-2019 - |
题
我正在尝试编写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
. 不隶属于 StackOverflow