Fazendo alterações ...
 
Notifications
Clear all

Fazendo alterações através de formulário

7 Posts
3 Usuários
0 Reactions
2,037 Visualizações
(@evilmaax)
Posts: 82
Trusted Member
Topic starter
 

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.

 
Postado : 24/10/2016 2:35 pm
(@mprudencio)
Posts: 2749
Famed Member
 

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
Microsoft Excel Brasil no Facebook

"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.

 
Postado : 24/10/2016 6:27 pm
(@evilmaax)
Posts: 82
Trusted Member
Topic starter
 

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?

 
Postado : 25/10/2016 12:02 pm
Jozelia
(@jozelia)
Posts: 45
Eminent Member
 

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

 
Postado : 25/10/2016 12:54 pm
(@evilmaax)
Posts: 82
Trusted Member
Topic starter
 

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

 
Postado : 26/10/2016 10:09 am
Jozelia
(@jozelia)
Posts: 45
Eminent Member
 

Ei coloquei um botão alterar com o código para você ver como fica.

 
Postado : 26/10/2016 7:59 pm
(@evilmaax)
Posts: 82
Trusted Member
Topic starter
 

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.

 
Postado : 27/10/2016 10:44 am