Olá amigos
Estou tentando ajudar um amigo com um formulário, mas estou tendo problemas.
A planilha é um banco de dados e no formulário há as opções de criar um registro, excluir, modificar, etc. e é justamente o modificar que não está dando certo.
Quando editamos algum dado e clicamos em salvar o formulário está criando um novo registro e não editando o mesmo.
Outro probleminha é que quando crio um novo registro o campo "cognome" não o adiciona ao ComboBox para que possa fazer a busca dele.
Se puderem me ajudar agradeço muito, já tentei de tudo e vocês são minha última eserança.
Nao identifiquei qual a sua chave primaria para que na hora de gravar a alteração seja localizado o registro correto.
Pode ser o CPF, RG ou outra parte do registro (desde que seja exclusivo e nao se repita), mas eu gosto de usar um numero interno que nao dependa do usuario para ser criado.
Assim vc pode criar uma busca atraves de formulas internas do VBA ou ainda atraves de um loop que ao encontrar o codigo substitua os dados da linha.
Marcelo Prudencio
"Começar já é a metade do caminho."
Autor Desconhecido
Simplifica que simples fica.
Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.
Nao identifiquei qual a sua chave primaria para que na hora de gravar a alteração seja localizado o registro correto.
Olá MPrudencio, gostaria de utilizar o cognome como chave primária, já que, a princípio, ela será única.
Pode me ajudar, por favor?
Olá acrescente este código talvez ajude.
Dim id As String
id = Textbox1 ' Sua chave primaria cognome "
linha = 2
'Aqui você realiza a pesquisa de qual cadastro quer alterar
Sheets("cadastro").Select
Do Until Sheets("cadastro").Cells(linha, 1) = "" 'vai executar o laço até encontrar uma célula vazia
'condicção para localizar o registro
If Sheets("cadastro").Cells(linha, 1) = id Then 'se encontrar o valor registro na célula pesquisada
Sheets("cadastro").Cells(linha, 1).Select 'será selecionada a célula
' Após localizar o registro coloque o código que faz a alteração
Sheets("cadastro").Cells(linha, 2) = opt_cliente
Sheets("cadastro").Cells(linha, 3) = opt_fornecedor
Fiz o código
Private Sub ALTERAR_Click() Call ModCódigos.Liberar TextBox1.SetFocus Plan2.Activate Sheets("cadastro").Cells(Linha, 2) = opt_cliente Sheets("cadastro").Cells(Linha, 3) = opt_fornecedor With ActiveCell ActiveCell.Value = Me.ComboBox1.Text .Offset(0, 1).Value = Me.TextBox1.Text .Offset(0, 2).Value = Me.TextBox2.Text .Offset(0, 3).Value = "=IFERROR(IF(ISBLANK(RC[-3]),"""",(TODAY()-RC[-1])/365),0)" .Offset(0, 4).Value = Me.TextBox4.Text .Offset(0, 5).Value = Me.TextBox5.Text .Offset(0, 6).Value = Me.TextBox6.Text .Offset(0, 7).Value = Me.TextBox7.Text .Offset(0, 8).Value = Me.TextBox8.Text .Offset(0, 9).Value = Me.TextBox9.Text .Offset(0, 10).Value = Me.TextBox10.Text .Offset(0, 11).Value = Me.TextBox11.Text .Offset(0, 12).Value = Me.TextBox12.Text .Offset(0, 13).Value = Me.TextBox13.Text .Offset(0, 14).Value = "=IFERROR(IF(ISBLANK(RC[-13]),"""",(TODAY()-RC[-1])/365),0)" .Offset(0, 15).Value = Me.TextBox15.Text .Offset(0, 16).Value = Me.TextBox16.Text .Offset(0, 17).Value = Me.TextBox17.Text .Offset(0, 18).Value = Me.TextBox18.Text .Offset(0, 19).Value = Me.TextBox19.Text .Offset(0, 20).Value = Me.TextBox20.Text .Offset(0, 21).Value = Me.TextBox21.Text .Offset(0, 22).Value = Me.TextBox22.Text .Offset(0, 23).Value = Me.TextBox23.Text .Offset(0, 24).Value = Me.TextBox24.Text .Offset(0, 25).Value = Me.TextBox25.Text .Offset(0, 26).Value = Me.TextBox26.Text .Offset(0, 27).Value = Me.TextBox27.Text .Offset(0, 28).Value = Me.TextBox28.Text .Offset(0, 29).Value = Me.TextBox29.Text .Offset(0, 30).Value = "=IFERROR(IFS(ISBLANK(RC[1]),0,RC[9]<>"""",""Past Master"",RC[6]<>"""",""Mestre Maçom"",RC[4]<>"""",""Companheiro Maçom"",RC[1]<>"""",""Aprendiz Maçom""),0)" .Offset(0, 31).Value = Me.TextBox31.Text .Offset(0, 32).Value = "=IFERROR(IF(ISBLANK(RC[-31]),"""",(TODAY()-RC[-1])/365),0)" .Offset(0, 33).Value = Me.TextBox33.Text .Offset(0, 34).Value = Me.TextBox34.Text .Offset(0, 35).Value = Me.TextBox35.Text .Offset(0, 36).Value = Me.TextBox36.Text .Offset(0, 37).Value = "=IFERROR(IF(ISBLANK(RC[-36]),"""",(TODAY()-RC[-1])/365),0)" .Offset(0, 38).Value = Me.TextBox38.Text .Offset(0, 39).Value = Me.TextBox39.Text .Offset(0, 40).Value = Me.TextBox40.Text .Offset(0, 41).Value = "=IFERROR(IF(ISBLANK(RC[-41]),"""",(TODAY()-RC[-1])/365),0)" .Offset(0, 42).Value = Me.TextBox42.Text .Offset(0, 43).Value = Me.TextBox43.Text .Offset(0, 44).Value = Me.TextBox44.Text .Offset(0, 45).Value = "=IFERROR(IF(ISBLANK(RC[-44]),"""",(TODAY()-RC[-1])/365),0)" .Offset(0, 46).Value = Me.TextBox46.Text .Offset(0, 47).Value = Me.TextBox47.Text .Offset(0, 48).Value = Me.TextBox48.Text .Offset(0, 49).Value = Me.TextBox49.Text .Offset(0, 50).Value = Foto End With Columns.AutoFit MsgBox "As informações do Irmão " & ComboBox1 & ", foram atualizadas com sucesso!!!", vbInformation LimparFormulário End Sub
que até funciona, porém não consigo criar um laço para procurar o cadastro a ser atualizado e ele sempre atualiza o cadastro 1.
Se alguém puder dar uma olhada
Ei coloquei um botão alterar com o código para você ver como fica.
Ei coloquei um botão alterar com o código para você ver como fica.
Muito obrigado Jozelia. Era isso mesmo que eu precisava.
Abraços a todos que tentaram me dar um help.