Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Listbox inserir dados na planilha

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
danielboca
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qua Mar 10, 2021 11:53 am

Listbox inserir dados na planilha

Mensagem por danielboca »

Boa tarde galera, estou fazendo uma planilha para cadastrar consumo de uma lanchonete, fiz um userform para cadastrar o consumo e o nome do cliente na planilha "Vendas", nesse userform tem uma listbox que aparece o que o cliente já consumiu, queria fazer um botão "PAGAR" e quando clicar, inserir a data do pagamento de cada produto listado na listbox daquele cliente na planilha "Vendas" na coluna "H", alguém pode me ajudar por favor?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


danielboca
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qua Mar 10, 2021 11:53 am

Re: Listbox inserir dados na planilha

Mensagem por danielboca »

Boa noite, consegui esse código, funciona mas tenho que dar baixa um por um, alguém sabe se tem como fazer com que ele já de baixa em todos os itens da listbox

Private Sub baixa()
Dim linhaPgto As Integer
Dim id As Integer
Dim contador As Integer
contador = 0

For Item = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(Item) = True Then
contador = contador + 1
End If

Next

If contador = 0 Then
MsgBox "Selecione um item para dar baixa", vbExclamation
Else

On Error Resume Next 'para não gerar erro caso o registro não exista

id = Me.TextboxID

'Localiza um registro pelo método find
linhaPgto = Sheets("Vendas").Range("A:A").Find(id).Row

Sheets("Vendas").Cells(linhaPgto, 8) = Format(Me.TBData.Value, "mm/dd/yyyy")
ListBox1.RemoveItem (ListBox1.ListIndex)

End If

End Sub


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Listbox inserir dados na planilha

Mensagem por srobles »

danielboca,

Analisando o código postado por você, percebe-se que a estrutura de repetição está incorreta.

Abaixo, deixo um exemplo de como se pode ter o resultado esperado, sem que dependa de selecionar ou verificar se um item está ou não ativo no ListBox:

Código: Selecionar todos

Private Sub baixa()

     Dim planVendas As Worksheet
    
    Set planVendas = ThisWorkbook.Sheets("Vendas")
        
    If MsgBox("Deseja baixar o pedido " & Me.TextBoxID & " ?", vbQuestion + vbYesNo, "Baixar?") = vbYes Then
        
        For vLinha = 2 To planVendas.Cells(Rows.Count, 1).End(xlUp).Row
            
            If planVendas.Cells(vLinha, 1) = Me.TextBoxID Then
                
                planVendas.Cells(vLinha, 8) = Format(Now, Me.TBData.Value, "mm/dd/yyyy")
                
            End If
                        
        Next
    
    End If
    
    MsgBox "Baixa realizada com sucesso!", vbInformation, "Baixa"
    
    Me.ListBox1.Clear
    
End Sub
Apenas lembrando que, tanto sua rotina quanto a modificada por mim, não verificar qual o item listado no controle ListBox. A baixa é feita verificando apenas o ID contido no TextBoxID do seu formulário.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder