CalixtoR_ 22/11/2023, 22:53
Olá, se for uma ListBox posso tentar ajudar, so você modificar as escritas, como textbox etc...
Private Sub BTSalvar_Click()
"Verifica se todos os campos estão preenchido, caso contrario retorna o texto da MsgBox logo abaixo...
If Me.TextBoxDataEmissão = "" Or Me.TextBoxDataCarregamento = "" Then
MsgBox "Preencha todos os Campos !"
Exit Sub
End If
"Coluna logo abaixo da tabela, aonde vai ser inserido os dados, como pode ver e coluna C linha 6
Range("C6").EntireRow.Insert
"Lugar aonde os dados serão salvos, seguindo a textbox onde foi inserido o valor...
Range("C6").Value = Me.TextBoxDataEmissão.Value
Range("D6").Value = Me.TextBoxDataCarregamento.Value
"Limpa os valores da textbox após terminar o cadastro.
Me.TextBoxDataEmissão.Value = ""
"Foca novamente na caixa de texto que desejar...
Me.TextBoxDataEmissão.SetFocus
"Local da tabela, acredito não ser necessário, faça o teste casso queira retirar...
Me.Lista.RowSource = "DadosL"
"Mensagem que ira aparecer logo após salvar...
MsgBox "Cadastro Realizado !"
End Sub
Seguindo agora para o comando do botão alterar.
____________________________________
Private Sub BTAlterarCadastro_Click()
Dim resposta As VbMsgBoxResult
Dim valor As Long
Dim fila As Object
Dim linha As Long
"Ira procura o id que queira alterar, caso contrario aparecera a msgbox
If Me.TextBoxNFe.Value = "" Then
MsgBox "Selecione um Cadastro para Alterar"
Exit Sub
End If
"Valor aonde ira procurar o ID para achar a linha que esta condiciona, e logo em seguida alterar...
valor = Me.TextBoxNFe.Value
resposta = MsgBox("Deseja alterar o cadastro numero " & valor & "?", vbYesNo)
If resposta = vbNo Then
Exit Sub
Else
"Esse comando ira deselecionar sua listbox logo após clicar, para mim foi necessário para dar certo.
For i = 0 To Lista.ListCount - 1
If Lista.Selected(i) Then
Lista.Selected(i) = False
End If
Next i
"Vai fazer o loop e procurar o valor procurado do ID, no caso a coluna fica no .Range("A:A"), ou na coluna que estiver seu ID
Set fila = Sheets("TabelaDados").Range("F:F").Find(valor, lookat:=xlWhole)
linha = fila.Row
"Comando que ira alterar os dados..
Range("C" & linha).Value = CDate(Format(Me.TextBoxDataEmissão, "dd/mm/yyyy"))
"Continue suas textboxs seguindo essa ordem..
"Limpa os campos após alterar...
Me.TextBoxDataEmissão.Value = ""
"Esse comando não me lembro muito bem, a parte da Lista.ListIndex = 1, acho que e para evitar erro caso tenha a textbox com id escrita ainda ou sem nada...
Lista.ListIndex = -1
MsgBox "Cadastro Alterado"
End If
End Sub
Espero que de certo e entenda o codigo, qualquer duvida chama.