문제

테이블에서 선택한 달을 필터링 할 VBA 코드의 평화를 작성하려고합니다.사용자가 그 달에 대한 답변을주지 않으면 답변이 주어질 때까지 질문을 계속해서 루프를 원합니다.OPTION 01, 02, 03, 04, 05, 06, 07, 08, 05, 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.=를 사용하고 Is가 아님을 사용하십시오.

또한 문자열을 "null"에 대해 비교하려는 경우 다음을 수행해야합니다.

Do While bdaymonth = vbNullString
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top