2
respostas

Meu Do While e For Next duplicou o Tipo de Veículo

aparece dessa forma:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadea forma da programação que redigi foi:

Private Sub UserForm_Activate() Dim iContador As Integer

iContador = 2

Do While Sheets("Controle de Entregas").Range("G" & iContador) <> vbNullString
    If Not fnVerificaVeiculoNaLista(Sheets("Controle de Entregas").Range("G" & iContador)) Then
        CmdTipoVeiculo.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 CmdTipoVeiculo.ListCount <> 0 Then
    For iContador = 0 To CmdTipoVeiculo.ListCount - 1
        If CmdTipoVeiculo.List(iContador) = ptipoveiculo Then
            fnVerificaVeiculoNaLista = True
        End If
    Next

End If

End Function

gentileza peço ajuda,grato.

2 respostas

Também gostaria de descobrir. Fiz a mesma formula em outra planilha com outro banco de dados e deu certinho, não consegui encontrar o erro.

Cara resolvi meu problema colocando "_" entre as palavras da function. Não saberia explicar o motivo, mas resolveu meu problema.

Private Sub UserForm_Activate()

    cmbveiculo.AddItem ""

    Dim iContador As Integer

    iContador = 2

    Do While Sheets("Controle de Entregas").Range("G" & iContador) <> vbNullString

        If fn_Verifica_Item_Lista(Sheets("Controle de Entregas").Range("G" & iContador)) = False Then
            cmbveiculo.AddItem Sheets("Controle de Entregas").Range("G" & iContador)
        End If

    iContador = iContador + 1

    Loop

    End sub
Function fn_Verifica_Item_Lista(pveiculo As String) As Boolean

    Dim iContador As Integer

    fn_Verifica_Item_Lista = False

        If cmbveiculo.ListCount <> 0 Then

            For iContador = 0 To cmbveiculo.ListCount - 1

              If cmbveiculo.List(iContador) = pveiculo Then
                fn_Verifica_Item_Lista = True
             End If

          Next

       End If

End Function