Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Avatar do usuário
Por Albino10
Posts Avatar
#72974
Boa tarde Senhores,
Estou anexando abaixo um arquivo em VBA para pedir ajuda em desenvolver o comando para o botão ALTERAR.
Até agora vinha desenvolvendo os demais botões USERFORMS, até agora fui bem em GRAVAR, LIMPAR E BUSCAR, mas travei no botão ALTERAR, não consegui ainda descobrir o comando que faça ALTERAÇÃO dos dadosde um determinado registro.
clique em ABRIR SISTEMA que vocês entenderão o meu pedido.
Desde de já meus agradecimentos
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#72977
Albino10 escreveu: 18 Fev 2023 às 15:41 clique em ABRIR SISTEMA que vocês entenderão o meu pedido.
Essa sua indicação acima foi de zero ajuda para identificar o problema. :?
Segue um palpite/chute: se o problema é que o ID existe na planilha mas não é encontrado, é porque o seu código está buscando o ID na coluna B ~~~> If ID = Plan6.Range("b" & i) Then, no entanto me parece que o ID está na coluna A.

obs.
1. em lugar de fazer a busca por meio de um Loop ~~~> For i = 2 To LINHA_FIM ... Next, faça por meio do método Find.
Imagine quando a sua planilha tiver dados até a linha 3.000 e você fizer a busca pelo ID 2.990. O seu Loop irá analisar 2.990 células até encontrar o ID. Ao passo que o Find irá direto sem Loop. ;)

2. na coluna A vejo que os IDs estão em sequência numérica e em ordem crescente. O ID 1 está em A3, o ID 2 está em A4, o ID 3 está em A5. Ou seja, cada ID está na linha número ~~~> (nº do ID + 2).
Então não precisa de busca para concluir que o ID 295 estará na linha ~~~> 295 + 2 ~~~> ou seja, estará em A297. ;)
Avatar do usuário
Por Albino10
Posts Avatar
#72978
Obrigado pelo retorno Osvaldo,
Os botões: Gravar, Buscar e Limpar eu Já consegui desenvolver os comandos na macro, o que eu estou "derretendo meus miolos" e não conseguindo, é no botão ALTERAR os dados de um determinado ID (cliente) buscado, por exemplo, suponhamos que eu busque o ID 3 no formulário e precise atualizar o nº do celular de um cliente, o comando que coloquei até avisa: "Alteração feita com sucesso!" mas não ocorre no BDados (Plan6). Tá faltando alguma coisa na macro para que àquela linha buscada se alterada.
Por osvaldomp
#72980
Olá, Albino.

Você leu o que escrevi na mensagem anterior ?

" ... se o problema é que o ID existe na planilha mas não é encontrado, é porque o seu código está buscando o ID na coluna B ~~~> If ID = Plan6.Range("b" & i) Then, no entanto me parece que o ID está na coluna A."
Avatar do usuário
Por Albino10
Posts Avatar
#72985
Infelizmente Osvaldo (como já deve ter percebido), sou muito leigo em VBA (ainda). Estou tentando aprender praticando e pesquisando nos vídeos no youtube.
Não consegui identificar sua informação "...código está buscando o ID na coluna B ~~~> If ID = Plan6.Range("b" & i) Then" no meu "programa".
Desculpe o trabalho, mas se puder ser um pouco mais claro talvez eu consiga achar a "ponta da linha".
Por osvaldomp
#72986
Salve, Albino.

O Loop do seu código faz a busca do ID na coluna B, no entanto, os IDs estão na coluna A e não na B.

Então altere de ~~~> Plan6.Range("b" & i)
para ~~~> Plan6.Range("A" & i)
Avatar do usuário
Por Albino10
Posts Avatar
#72987
Esse é o código do botão ALTERAR que não consigo ativar no formulário para editar os dados quando necessário.
Private Sub BtAlterarCad_Click()
Plan6.Activate
Dim plan As String
plan = Plan6.Name

Dim c
With Worksheets(plan).Range("A:A")
Set c = .Find(Resp, LookIn:=xlValues, lookat:=xlWhole)

If Not c Is Nothing Then
c.Activate

Txt_Cliente.Value = c.Offset(0, 1).Value
Txt_Logradouro.Value = c.Offset(0, 2).Value
Txt_Complemento.Value = c.Offset(0, 3).Value
Txt_Bairro.Value = c.Offset(0, 4).Value
Txt_Cidade.Value = c.Offset(0, 5).Value
Txt_CEP.Value = c.Offset(0, 6).Value
Txt_UF.Value = c.Offset(0, 7).Value
Txt_Email.Value = c.Offset(0, 8).Value
Txt_TelFixo.Value = c.Offset(0, 9).Value
Txt_Celular1.Value = c.Offset(0, 10).Value
Txt_Celular2.Value = c.Offset(0, 11).Value
Txt_TelRecado.Value = c.Offset(0, 12).Value

MsgBox "Cadastro CLIENTE alterado com sucesso.", vbInformation, "ALTERAR!"
End If
End With
=============================================
Esse é o código do botão BUSCAR no formulário que está buscando os dados no formulário.
Private Sub BtBuscarCad_Click()
Plan6.Activate
Dim plan As String
plan = Plan6.Name

Dim Resp
Resp = InputBox("Digite o número do ID", "BUSCAR!")

Dim c
With Worksheets(plan).Range("A:A")
Set c = .Find(Resp, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then

c.Activate
Txt_ID.Value = c.Value
Txt_Cliente.Value = c.Offset(0, 1).Value
Txt_Logradouro.Value = c.Offset(0, 2).Value
Txt_Complemento.Value = c.Offset(0, 3).Value
Txt_Bairro.Value = c.Offset(0, 4).Value
Txt_Cidade.Value = c.Offset(0, 5).Value
Txt_CEP.Value = c.Offset(0, 6).Value
Txt_UF.Value = c.Offset(0, 7).Value
Txt_Email.Value = c.Offset(0, 8).Value
Txt_TelFixo.Value = c.Offset(0, 9).Value
Txt_Celular1.Value = c.Offset(0, 10).Value
Txt_Celular2.Value = c.Offset(0, 11).Value
Txt_TelRecado.Value = c.Offset(0, 12).Value

Alterar = Txt_ID.Text

BtAlterarCad.Enabled = True
BtExcluirCad.Enabled = True
BtGravarCad.Enabled = False

Else
MsgBox "Número de ID não localizado.", vbCritical, "BUSCAR!"

End If
End With
===============================================
Não consegui localizar onde está busca na coluna "B" que você falou, desculpe a minha dificuldade.
Por osvaldomp
#72988
Albino, o código BtAlterarCad_Click que você postou acima eu não encontrei no seu arquivo.
Coloquei abaixo uma cópia do trecho inicial do código BtAlterarCad_Click que existe no seu arquivo. É esse código que contém a linha que comentei antes (é a segunda linha de baixo para cima).
Código: Selecionar todos
Private Sub BtAlterarCad_Click()        
        Dim LINHA_FIM As Integer
        Dim ID As Integer
        Dim i As Integer        
        LINHA_FIM = Plan6.Range("A30000").End(xlUp).Row
        ID = Txt_ID        
        For i = 2 To LINHA_FIM
        If ID = Plan6.Range("b" & i) Then
        Plan6.Range("b" & i) = Txt_Cliente
...
...

##
Ainda, esse código que você postou replica dados da planilha no Form, e o outro existente no seu arquivo faz o inverso, replica do Form na planilha.
Se ainda precisar de ajuda, eu sugiro que você volte a postar o arquivo após a sua atualização.
Avatar do usuário
Por Albino10
Posts Avatar
#72989
Agora faz sentido tanto desencontro de informações, anexei um arquivo com os códigos quase certos e estava analisando aqui o arquivo diferente. desculpe, mas muito obrigado por não desistir, sua ajuda deu certo, o botão ALTERAR funcionou. muuito obrigado mais uma vez.
osvaldomp agradeceu por isso

=SE(MÊS(A1)<7;"1º sem&a[…]

Bom Dia Senhores. Tenho uma macro que preciso dei[…]

Free relationships without drama and obligations. […]

Girar Imagem e Zoom

Boa noite Teria alguma forma de dar um "[…]

Valeu. Muito Obrigado!!!!!!!!

Pessoal, Ao clicar no botão Copiar (Guia C[…]

Procv com serro em vba

Resolvido

Bom dia, pessoal! com a data de nascimento e data […]

Estamos migrando para uma comunidade no Discord