Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal! gostaria da ajuda de vocês em uma planilha de cadastro de clientes usando userforms e programação...A minha planilha ela já me traz os resultados automaticamente só clicar no nome da pessoa e o Excel trará todas devidas informações e dessas informações gostaria de adicionar um botão para exclui-la a que eu estiver selecionada no lst_clientes somente e não apagar todos!

 

meu código do lst_clientes:

 

Private Sub lstclientes_Change()
Dim Lin As Integer
Lin = 2
Do Until Sheets("Plan1").Cells(Lin, 1).Value = Empty
If Sheets("Plan1").Cells(Lin, 1).Value = lstclientes.Value Then
txtnome.Value = Sheets("Plan1").Cells(Lin, 1).Value
txtcpf.Value = Sheets("Plan1").Cells(Lin, 2).Value
txttelefone.Value = Sheets("Plan1").Cells(Lin, 3).Value
txtrua.Value = Sheets("Plan1").Cells(Lin, 4).Value
txtcidade.Value = Sheets("Plan1").Cells(Lin, 5).Value
txtestado.Value = Sheets("Plan1").Cells(Lin, 6).Value
txtdata1.Value = Sheets("Plan1").Cells(Lin, 7).Value
txtservico.Value = Sheets("Plan1").Cells(Lin, 9).Value
txtmodelo.Value = Sheets("Plan1").Cells(Lin, 10).Value
txtvalor.Value = Sheets("Plan1").Cells(Lin, 11).Value
txtdata2.Value = Sheets("Plan1").Cells(Lin, 12).Value
txtstatus1.Value = Sheets("Plan1").Cells(Lin, 14).Value
     txtnome.Enabled = False
     txtcpf.Enabled = False
     txtdata1.Enabled = False
     txtdata2.Enabled = False
     txtstatus1.Enabled = False
     txtmodelo.Enabled = False
Exit Do
Exit Do
End If
Lin = Lin + 1
Loop
End Sub

Postado

Coloque esses comandos no evento click do botao excluir do mesmo formulário que tem o lstclientes.

 

Se ainda não conseguir dê mais detalhes sobre o problema (código do erro, etc).

 

  • Curtir 1
Postado

Esse comando não faz busca, apenas limpa a item do listbox que foi selecionado.

 

Para apagar o cliente da planilha tente usar a variável Lin como referência da linha com EntireRow.Delete.

 

Se ainda não estiver conseguindo anexe um modelo da planilha para facilitar a ajuda.

  • Curtir 1
Postado
Em 02/09/2020 às 10:17, Midori disse:

Esse comando não faz busca, apenas limpa a item do listbox que foi selecionado.

 

Para apagar o cliente da planilha tente usar a variável Lin como referência da linha com EntireRow.Delete.

 

Se ainda não estiver conseguindo anexe um modelo da planilha para facilitar a ajuda.

tá ai minha planilha esses clientes são meras ilustrações!

cadastroclientes 2.0 com visual basic.rar

Postado

@Formactory Windows Informa Veja se resolve,

 

Private Sub excluir_Click()
    Dim Lin As Integer
    Dim Controle    As Object
    Lin = 2
    
    If lstclientes.ListIndex <> -1 Then
        Sheets("Plan1").Cells(Lin2, 1).EntireRow.Delete
        
        For Each Controle In Me.Controls
            If TypeName(Controle) = "TextBox" Then
                Controle = ""
            End If
        Next Controle
        lstclientes.Clear
        Do Until Sheets("Plan1").Cells(Lin, 1).Value = Empty
            lstclientes.AddItem Sheets("Plan1").Cells(Lin, 1)
            Lin = Lin + 1
        Loop
    End If
End Sub

A variável Lin2 eu declarei publicamente no módulo do formulário e atribui a ela o valor de Lin em lstclientes_Change,

...
Exit Do
End If
Lin = Lin + 1
Loop

Lin2 = Lin
End Sub

 

  • Curtir 1
Postado

Você não deve ter feito como expliquei acima...

 

"A variável Lin2 eu declarei publicamente no módulo do formulário e atribui a ela o valor de Lin em lstclientes_Change,"

 

Testei aqui e não deu nenhum erro....

 

Código completo do UserForm2,

 

Spoiler

Dim Lin2 As Integer

Sub AtualizarControles()
Dim Lin As Integer
Lin = 2
Do Until Sheets("Plan1").Cells(Lin, 1).Value = Empty

If Sheets("Plan1").Cells(Lin, 1).Value = lstclientes.Value Then
txtnome.Value = Sheets("Plan1").Cells(Lin, 1).Value
txtcpf.Value = Sheets("Plan1").Cells(Lin, 2).Value
txttelefone.Value = Sheets("Plan1").Cells(Lin, 3).Value
txtrua.Value = Sheets("Plan1").Cells(Lin, 4).Value
txtcidade.Value = Sheets("Plan1").Cells(Lin, 5).Value
txtestado.Value = Sheets("Plan1").Cells(Lin, 6).Value
txtdata1.Value = Sheets("Plan1").Cells(Lin, 7).Value
txtservico.Value = Sheets("Plan1").Cells(Lin, 9).Value
txtmodelo.Value = Sheets("Plan1").Cells(Lin, 10).Value
txtvalor.Value = Sheets("Plan1").Cells(Lin, 11).Value
txtdata2.Value = Sheets("Plan1").Cells(Lin, 12).Value
txtsearch.Value = Sheets("Plan1").Cells(Lin, 14).Value
     txtnome.Enabled = False
     txtcpf.Enabled = False
     txtdata1.Enabled = False
     txtdata2.Enabled = False
     txtsearch.Enabled = False
     txtmodelo.Enabled = False
Exit Do
Exit Do
End If
Lin = Lin + 1
Loop

Lin2 = Lin
End Sub

Private Sub CommandButton2_Click()
Dim Lin As Integer
Lin = 2
Do Until Sheets("Plan1").Cells(Lin, 1).Value = Empty
If Sheets("Plan1").Cells(Lin, 1).Value = lstclientes.Value Then
Sheets("Plan1").Cells(Lin, 3).Value = txttelefone.Value
Sheets("Plan1").Cells(Lin, 4).Value = txtrua.Value
Sheets("Plan1").Cells(Lin, 5).Value = txtcidade.Value
Sheets("Plan1").Cells(Lin, 6).Value = txtestado.Value
Sheets("Plan1").Cells(Lin, 9).Value = txtservico.Value
txtmodelo.Value = Sheets("Plan1").Cells(Lin, 10).Value
Sheets("Plan1").Cells(Lin, 11).Value = txtvalor.Value
Sheets("Plan1").Cells(Lin, 12).Value = Date
Sheets("Plan1").Cells(Lin, 13).Value = Time
Sheets("Plan1").Cells(Lin, 14).Value = txtstatus.Value
     txtnome.Enabled = True
     txtcpf.Enabled = True
txtnome = Empty
txtcpf = Empty
txttelefone = Empty
txtrua = Empty
txtcidade = Empty
txtestado = Empty
txtservico = Empty
txtvalor = Empty
txtstatus = Empty
MsgBox ("Registro Atualizado Com Sucesso!")
End If
Lin = Lin + 1
Loop
End Sub


Private Sub CommandButton5_Click()
ActiveWorkbook.Save
MsgBox "Planilha Salva Com Sucesso!"
End Sub
Private Sub excluir_Click()
    Dim Lin As Integer
    Dim Controle    As Object
    Lin = 2
    
    If lstclientes.ListIndex <> -1 Then
        Sheets("Plan1").Cells(Lin2, 1).EntireRow.Delete
        
        For Each Controle In Me.Controls
            If TypeName(Controle) = "TextBox" Then
                Controle = ""
            End If
        Next Controle
    
        Do Until Sheets("Plan1").Cells(Lin, 1).Value = Empty
            lstclientes.AddItem Sheets("Plan1").Cells(Lin, 1)
            Lin = Lin + 1
        Loop
    End If
End Sub

Private Sub UserForm_Activate()
Dim Lin As Integer
Lin = 2
Do Until Sheets("Plan1").Cells(Lin, 1).Value = Empty
lstclientes.AddItem Sheets("Plan1").Cells(Lin, 1)
Lin = Lin + 1
Loop
End Sub
Private Sub lstclientes_Change()
    Call AtualizarControles
End Sub

 

 

 

  • Curtir 1
Postado

@Formactory Windows Informa No código que eu postei você viu que mesmo apagando todos os clientes do listbox após a exclusão os que restaram na planilha são recarregados novamente? Tem algum problema limpar o listbox se os clientes que continuaram na planilha serão adicionados novamente logo em seguida?

 

É isso que acontece aqui,

lstclientes.Clear
Do Until Sheets("Plan1").Cells(Lin, 1).Value = Empty
  lstclientes.AddItem Sheets("Plan1").Cells(Lin, 1)
  Lin = Lin + 1
Loop

Mas se não quiser dessa forma, pode fazer como falei no primeiro post com RemoveItem e assim não precisa desse loop para recarregar o listbox.

  • Curtir 1
Postado
6 horas atrás, Midori disse:

@Formactory Windows Informa Se for para imprimir a tabela com os dados de todos os clientes pode ser feito assim,

 


ThisWorkbook.Worksheets("Plan1").Range("A1").CurrentRegion.PrintOut Copies:=1

 

Eu não quero que imprime todos os clientes pois uso o cpf individual do cliente ai quero fazer tipo um recibo ou comprovante de todos os dados individuais do cliente e quero que ele imprima somente o que estiver selecionado no lstclientes que praticamente igual a do botão excluir que exclui o cliente selecionado do lstclientes!entendeu?

Postado
19 horas atrás, Midori disse:

@Formactory Windows Informa Assim vai imprimir só a linha do cliente selecionado no listbox,


If lstclientes.ListIndex <> -1 Then
    ThisWorkbook.Worksheets("Plan1").Range("A" & Lin2 & ":N" & Lin2).PrintOut Copies:=1
End If

 

Gostei...obrigado se não for abusar demais teria como aproximar a linha selecionada no listbox a lin 1...segue o exemplo da imagem:

Sem título14.png

Postado

@Formactory Windows Informa  Para imprimir a linha do título a macro vai ter que copiar os dados para Plan2,

 

If lstclientes.ListIndex <> -1 Then
    ThisWorkbook.Worksheets("Plan1").Range("A1:N1,A" & Lin2 & ":N" & Lin2).Copy
    ThisWorkbook.Worksheets("Plan2").Range("A1").PasteSpecial
    ThisWorkbook.Worksheets("Plan2").Range("A1:N2").PrintOut Copies:=1
End If

 

Antes de imprimir ajuste os tamanhos das colunas em Plan2 para ficar igual da Plan1.

  • Curtir 1
Postado
8 horas atrás, Midori disse:

@Formactory Windows Informa  Para imprimir a linha do título a macro vai ter que copiar os dados para Plan2,

 


If lstclientes.ListIndex <> -1 Then
    ThisWorkbook.Worksheets("Plan1").Range("A1:N1,A" & Lin2 & ":N" & Lin2).Copy
    ThisWorkbook.Worksheets("Plan2").Range("A1").PasteSpecial
    ThisWorkbook.Worksheets("Plan2").Range("A1:N2").PrintOut Copies:=1
End If

 

Antes de imprimir ajuste os tamanhos das colunas em Plan2 para ficar igual da Plan1.

ok obrigado está do jeito que eu quero , só,uma outra coisa boa também que ficaria era por 2 linhas para eu e o cliente assinar e uma mensagem em outra linha né?😅mas acho que consigo fazer ja obrigado!

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!