none
Procurar, Copiar e Colar RRS feed

  • Pergunta

  • Prezados, 

    Estou tentando montar um banco de atualização de dados.

    Existe uma planilha chamada Base de Dados, onde tenho mais de 10000 lançamentos de notas fiscais, clientes, valores e situação.

    A idéia é montar um VBA para que seja atualizado o status de pagamento ou envio de emails para os clientes.

    Decidi montar um formulário com as informações Clientes (combox - 50 nomes), data de atualização, Novo Status e observação.

    Quero que quando for selecionado o cliente na combox, ele procure na planilha todas as linhas que contem o nome do cliente e atualize o status, data e observação.

    Mas não estou conseguindo.

    Private Sub Botao_Atualizar_Click()
    'Aqui começa a gravação de dados
    Worksheets("Base").Select
    For i = 2 To lastrow
    cellrange = Cells(i, 3)
    If CBox_Cliente = cellrange Then
    Cbox_Client.Select
    Selection.Copy
    Cells(i, 28).Paste
    Cells(i, 29) = CBox_Atualizacao
    Cells(i, 30) = Box_Obs
    End If
    Next
    MsgBox "Dados Gravados com Sucesso!!"

    CBox_Cliente = ""
    Box_data = ""
    CBox_Atualizacao = ""
    Box_Obs = ""

    CBox_Cliente.SetFocus

    End Sub

    terça-feira, 8 de maio de 2018 18:23

Todas as Respostas

  • Então é assim:

    Cria um Userform e coloca 1 Combobox, 3 Textbox e 1 CommandButton.

    No evento Initialize do Userform cola o código seguinte:

    Private Sub UserForm_Initialize()
    
        lin = 2
        Do Until Sheets("Base").Cells(lin, 1) = ""
        CBox_Cliente.AddItem Sheets("Base").Cells(lin, 3)
        lin = lin + 1
        Loop
    
    End Sub

    No quadro de propriedades da Combobox, seleciona a propriedade "ListRow" e altera o nº à direita para 50.

    No código do Botão cola o código seguinte:

    Private Sub Botao_Atualizar_Click()
    Dim lastrow As Long, i As Integer, cellrange As Range
    'Aqui começa a gravação de dados
    Worksheets("Base").Select
    lastrow = Sheets("Base").Cells(Cells.Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To lastrow
    
    If CBox_Cliente.Value = Cells(i, 3).Value Then
    
    Sheets("Base").Cells(i, 28).Value = TextBox13.Value
    Sheets("Base").Cells(i, 29).Value = TextBox14.Value
    Sheets("Base").Cells(i, 30).Value = TextBox15.Value
    
    MsgBox "Dados Gravados com Sucesso!!"
    
    End If
    
    Next
    
    CBox_Cliente = "": TextBox13.Value = ""
    TextBox14.Value = "": TextBox15.Value = ""
    
    CBox_Cliente.SetFocus
    
    End Sub

    Ao selecionares um nome na Combo, escreve nas TextBox o texto que quiseres como experiência e clica em "Atualizar".

    Alterei a posição da Caixa de Messagens, pois onde estava apresentava "dados gravados com sucesso" quer fossem gravados ou não.

    Altera o nome das Textbox de acordo com a tua aplicação.

    Espero que resolva o teu problema.


    Caso te seja útil, marca como resposta.

    M_A_S_L




    • Editado M_A_S_L quarta-feira, 9 de maio de 2018 00:41
    terça-feira, 8 de maio de 2018 21:12