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?

È stato utile?

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
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top