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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord