Pergunta

Eu estou tentando escrever uma paz de código VBA que irá filtrar o mês selecionado a partir de uma tabela.Se o usuário não dar uma resposta para o mês em questão, eu quero um ciclo que continua a fazer a pergunta, até que uma resposta seja dada.Preferível, mesmo com como única opção 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, mas eu sou apenas um iniciante no VBA.

Eu tenho escrito o seguinte código até agora:

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

Mas ele continua me dando um erro "tipo incompatível" no

Do While bdaymonth Is "0"

Eu já tentei de algumas maneiras.Se eu tentar isso, recebo um "Objeto necessário"erro:

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

Eu sou muito novo para programação VBA, poderia alguma de dar-me alguns ponteiros para onde eu errei?

Foi útil?

Solução

Você comparar seqüências de caracteres de forma errada.Você deve fazer isso:

Do While bdaymonth = "0"

i.e.utilização = e não Is.

Também, quando você quer comparar uma seqüência de caracteres com "null", você deve fazer isso:

Do While bdaymonth = vbNullString
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top