2
respostas

Não consegui executar o comando

[Aula 4 do Curso Excel: Personalizando e automatizando tarefas com VBAN] O resultado da execução do código VBA foi uma lista de sete itens "-1" na lista do ComboBox ao invés da lista de três itens Tipos de Transportes da coluna "G". Não consegui encontrar o erro. Mas dá a entender que o código não encontra os tipos de transporte e lê em todas as execuções o IF NOT.


Private Sub UserForm_Activate()
    Dim iContador As Integer

    iContador = 2

    cmbTipoVeiculo.AddItem = ""
    Do While Sheets("Controle de Entregas").Range("G" & iContador) <> vbNullString
        If Not fnVerificaVeiculoNaLista(Sheets("Controle de Entregas").Range("G" & iContador) <> vbNullString) Then
            cmbTipoVeiculo.AddItem Sheets("Controle de Entregas").Range("G" & iContador) <> vbNullString
        End If

        iContador = iContador + 1
    Loop
End Sub

Function fnVerificaVeiculoNaLista(pTipoDeVeiculo As String) As Boolean

    Dim iContador As Integer

    fnVerificaVeiculoNaLista = False

    If cmbTipoVeiculo.ListCount <> 0 Then

        For iContador = 0 To cmbTipoVeiculo.ListCount - 1
            If cmbTipoVeiculo.List(iContador) = pTipoDeVeiculo Then
                fnVerificaVeiculoNaLista = True
            End If
        Next

    End If

End Function
2 respostas

Fala Robson, tudo bem?

Neste ponto do código é necessário que tenha sido feita a listagem na coluna "G" da planilha "Controle de Entregas". Esse é um primeiro ponto possível de erro.

Além disso seria legal usar a diretiva OPTION EXPLICIT no início do código para ter certeza de que todas as variáveis estão corretas.

Se não for nenhuma dessas duas opções dê um pouco mais de detalhes de como está sua planilha na coluna G para que possamos ajudá-lo.

Abraços,

Prof. Roberto Sabino.

Acho que esse erro esta acontecendo porque no comando "Private Sub UserForm_Activate()", na parte do "if not" no final de "fnVerificaVeiculoNaLista" você colocou "<> vbnullstring", e você fez isso novamente no final do " cmbTipoVeiculo". acredito que se retirar esses ""<> vbnullstring" do final do "fnVerificaVeiculoNaLista" e do " cmbTipoVeiculo", o seu problema será resolvido.

Private Sub UserForm_Activate()
    Dim iContador As Integer

    iContador = 2

    cmbTipoVeiculo.AddItem = ""
    Do While Sheets("Controle de Entregas").Range("G" & iContador) <> vbNullString
        If Not fnVerificaVeiculoNaLista(Sheets("Controle de Entregas").Range("G" & iContador)) Then
            cmbTipoVeiculo.AddItem Sheets("Controle de Entregas").Range("G" & iContador)
        End If

        iContador = iContador + 1
    Loop
End Sub

Function fnVerificaVeiculoNaLista(pTipoDeVeiculo As String) As Boolean

    Dim iContador As Integer

    fnVerificaVeiculoNaLista = False

    If cmbTipoVeiculo.ListCount <> 0 Then

        For iContador = 0 To cmbTipoVeiculo.ListCount - 1
            If cmbTipoVeiculo.List(iContador) = pTipoDeVeiculo Then
                fnVerificaVeiculoNaLista = True
            End If
        Next

    End If

End Function