Errore richiesto oggetto VBA in DO mentre loop
-
21-12-2019 - |
Domanda
Sto cercando di scrivere una pace di codice VBA che filtrarà il mese selezionato da una tabella.Se l'utente non dà una risposta alla domanda del mese, voglio un anello lì che continua a fare la domanda fino a quando non viene data una risposta.Preferibile anche con come opzione solo 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, ma sono solo un principiante in VBA.
Ho scritto finora il seguente codice:
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
.
Ma continua a darmi un errore "Mismatch di tipo" in
Do While bdaymonth Is "0"
.
Ho provato alcuni modi.Se provo questo ottengo un "errore richiesto da un oggetto":
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
.
Sono abbastanza nuovo per la programmazione VBA, alcuni di voi potrebbero darmi alcuni puntatori a dove sono andato storto?
Soluzione
Confronta le stringhe in modo errato.Dovresti farlo:
Do While bdaymonth = "0"
.
I.e.Utilizzare =
e non Is
.
Inoltre, quando vuoi confrontare una stringa contro "NULL", dovresti farlo:
Do While bdaymonth = vbNullString
.