Botão_Alterar
Enviado: Ter Jan 10, 2017 3:49 pm
boa tarde,
é a primeira vez que utilizo o VBA, fiz o meu fomulário assistindo a videos e procurando em fóruns, ele esta funcionando porém eu gostaria de inserir um botão para alterar, pois primeiro faço o cadastro do cliente e depois insiro o orçamento, mais utilizando a opção salvar ele duplica, gostaria de, quando inserir novas informações no formulário ele não duplicasse e sim alterasse.
O código está assim porém quando clico para alterar ele não altera.
Private Sub Botão_Alterar_Click()
Range("a2").Select
While ActiveCell <> ""
If Campo_Nome.Text = ActiveCell Then
ActiveCell.Offset(0, 1) = Campo_Nome.Text
ActiveCell.Offset(0, 2) = Campo_End.Text
ActiveCell.Offset(0, 3) = Campo_N.Text
ActiveCell.Offset(0, 4) = Campo_Bairro.Text
ActiveCell.Offset(0, 5) = Campo_Cidade.Text
ActiveCell.Offset(0, 6) = Campo_Telefone.Text
ActiveCell.Offset(0, 7) = Campo_NRA.Text
ActiveCell.Offset(0, 8) = Campo_Revendedor.Text
ActiveCell.Offset(0, 9) = Campo_Data.Text
ActiveCell.Offset(0, 10) = Campo_NNF.Text
ActiveCell.Offset(0, 11) = Campo_Eq.Text
ActiveCell.Offset(0, 12) = Campo_Obs.Text
ActiveCell.Offset(0, 13) = Combo_Recebido.Text
ActiveCell.Offset(0, 14) = Campo_Nome_2.Text
ActiveCell.Offset(0, 15) = Campo_Eq_2.Text
ActiveCell.Offset(0, 16) = Campo_Data_2.Text
ActiveCell.Offset(0, 17) = Campo_Orç.Text
ActiveCell.Offset(0, 18) = Campo_Cred.Text
ActiveCell.Offset(0, 19) = Campo_AV.Text
ActiveCell.Offset(0, 20) = Combo_Tec.Text
ActiveCell.Offset(0, 21) = Campo_Pronta.Text
ActiveCell.Offset(0, 22) = Campo_NAP.Text
ActiveCell.Offset(0, 23) = Campo_Retirada.Text
ActiveCell.Offset(0, 24) = Campo_Obs_1.Text
ActiveCell.Offset(0, 25) = Campo_Obs_2.Text
ActiveCell.Offset(0, 26) = Campo_Obs_3.Text
ActiveCell.Offset(0, 27) = Campo_Obs_4.Text
ActiveCell.Offset(0, 28) = Campo_Obs_5.Text
ActiveCell.Offset(0, 29) = Campo_Obs_6.Text
End If
ActiveCell.Offset(1, 0).Activate
Wend
'Mensagem de gravação
MsgBox "Alteração efetuada com sucesso "
End Sub
Private Sub Botão_Imprimir_Click()
'Para escolher impressora
Application.Dialogs(xlDialogPrinterSetup).Show
'Ativar função imprimir
Me.PrintForm
End Sub
Private Sub Botão_Salvar_Click()
'Variavel Total registro armazena a quantidade de linhas preenchidas
totalregistro = Worksheets("BancodeDados").UsedRange.Rows.Count + 1
Worksheets("BancodeDados").Select
'Começo da gravação dos Dados
Cells(totalregistro, 1) = Campo_NOS
Cells(totalregistro, 2) = Campo_Nome
Cells(totalregistro, 3) = Campo_End
Cells(totalregistro, 4) = Campo_N
Cells(totalregistro, 5) = Campo_Bairro
Cells(totalregistro, 6) = Campo_Cidade
Cells(totalregistro, 7) = Campo_Telefone
Cells(totalregistro, 8) = Campo_NRA
Cells(totalregistro, 9) = Campo_Revendedor
Cells(totalregistro, 10) = Campo_Data
Cells(totalregistro, 11) = Campo_NNF
Cells(totalregistro, 12) = Campo_Eq
Cells(totalregistro, 13) = Campo_Obs
Cells(totalregistro, 14) = Combo_Recebido
Cells(totalregistro, 15) = Campo_Nome_2
Cells(totalregistro, 16) = Campo_Eq_2
Cells(totalregistro, 17) = Campo_Data_2
Cells(totalregistro, 18) = Campo_Orç
Cells(totalregistro, 19) = Campo_Cred
Cells(totalregistro, 20) = Campo_AV
Cells(totalregistro, 21) = Combo_Tec
Cells(totalregistro, 22) = Campo_Pronta
Cells(totalregistro, 23) = Campo_NAP
Cells(totalregistro, 24) = Campo_Retirada
Cells(totalregistro, 25) = Campo_Obs_1
Cells(totalregistro, 26) = Campo_Obs_2
Cells(totalregistro, 27) = Campo_Obs_3
Cells(totalregistro, 28) = Campo_Obs_4
Cells(totalregistro, 29) = Campo_Obs_5
Cells(totalregistro, 30) = Campo_Obs_6
'Mensagem de gravação
MsgBox "O. S. Salva"
'Salvar planilha automaticamente
ActiveWorkbook.Save
End Sub
Private Sub Botão_Cancelar_Click()
Unload Nova_OS
Pag_Inicial.Show
End Sub
Private Sub Combo_Localizar_OS_Click()
totalregistro = Worksheets("bancodedados").UsedRange.Rows.Count
For i = 0 To totalregistro
If Combo_Localizar_OS.ListIndex = i Then
'Preencher as caixas
Campo_NOS = Cells(i + 2, 1)
Campo_Nome = Cells(i + 2, 2)
Campo_End = Cells(i + 2, 3)
Campo_N = Cells(i + 2, 4)
Campo_Bairro = Cells(i + 2, 5)
Campo_Cidade = Cells(i + 2, 6)
Campo_Telefone = Cells(i + 2, 7)
Campo_NRA = Cells(i + 2, 8)
Campo_Revendedor = Cells(i + 2, 9)
Campo_Data = Cells(i + 2, 10)
Campo_NNF = Cells(i + 2, 11)
Campo_Eq = Cells(i + 2, 12)
Campo_Obs = Cells(i + 2, 13)
Combo_Recebido = Cells(i + 2, 14)
Campo_Nome_2 = Cells(i + 2, 15)
Campo_Eq_2 = Cells(i + 2, 16)
Campo_Data_2 = Cells(i + 2, 17)
Campo_Orç = Cells(i + 2, 18)
Campo_Cred = Cells(i + 2, 19)
Campo_AV = Cells(i + 2, 20)
Combo_Tec = Cells(i + 2, 21)
Campo_Pronta = Cells(i + 2, 22)
Campo_NAP = Cells(i + 2, 23)
Campo_Retirada = Cells(i + 2, 24)
Campo_Obs_1 = Cells(i + 2, 25)
Campo_Obs_2 = Cells(i + 2, 26)
Campo_Obs_3 = Cells(i + 2, 27)
Campo_Obs_4 = Cells(i + 2, 28)
Campo_Obs_5 = Cells(i + 2, 29)
Campo_Obs_6 = Cells(i + 2, 30)
Exit Sub
End If
Next
End Sub
Private Sub UserForm_Initialize()
' Inserir nome do atendente
Combo_Recebido.AddItem "Bianca"
Combo_Recebido.AddItem "Henrique"
Combo_Recebido.AddItem "Jéssica"
Combo_Recebido.AddItem "Marcos"
' Inserir nome do técnico
Combo_Tec.AddItem "Adriano"
Combo_Tec.AddItem "Alex"
Combo_Tec.AddItem "João"
Combo_Tec.AddItem "Paulo"
Combo_Tec.AddItem "Uilquer"
'código para campo localizar
totaldelinhas = Worksheets("bancodedados").UsedRange.Rows.Count
Combo_Localizar_OS.RowSource = "bancodedados!b2:b" & totaldelinhas
'Contagem automatica das ordens de serviço
totalregistro = Worksheets("bancodedados").UsedRange.Rows.Count
For i = 0 To totalregistro
Plan1.Select
linha = 2
cont = i
Do Until Sheets("plan1").Cells(linha, 1) = ""
linha = linha + 1
cont = cont + 1
Loop
Campo_NOS.Text = cont
Next
End Sub
é a primeira vez que utilizo o VBA, fiz o meu fomulário assistindo a videos e procurando em fóruns, ele esta funcionando porém eu gostaria de inserir um botão para alterar, pois primeiro faço o cadastro do cliente e depois insiro o orçamento, mais utilizando a opção salvar ele duplica, gostaria de, quando inserir novas informações no formulário ele não duplicasse e sim alterasse.
O código está assim porém quando clico para alterar ele não altera.
Private Sub Botão_Alterar_Click()
Range("a2").Select
While ActiveCell <> ""
If Campo_Nome.Text = ActiveCell Then
ActiveCell.Offset(0, 1) = Campo_Nome.Text
ActiveCell.Offset(0, 2) = Campo_End.Text
ActiveCell.Offset(0, 3) = Campo_N.Text
ActiveCell.Offset(0, 4) = Campo_Bairro.Text
ActiveCell.Offset(0, 5) = Campo_Cidade.Text
ActiveCell.Offset(0, 6) = Campo_Telefone.Text
ActiveCell.Offset(0, 7) = Campo_NRA.Text
ActiveCell.Offset(0, 8) = Campo_Revendedor.Text
ActiveCell.Offset(0, 9) = Campo_Data.Text
ActiveCell.Offset(0, 10) = Campo_NNF.Text
ActiveCell.Offset(0, 11) = Campo_Eq.Text
ActiveCell.Offset(0, 12) = Campo_Obs.Text
ActiveCell.Offset(0, 13) = Combo_Recebido.Text
ActiveCell.Offset(0, 14) = Campo_Nome_2.Text
ActiveCell.Offset(0, 15) = Campo_Eq_2.Text
ActiveCell.Offset(0, 16) = Campo_Data_2.Text
ActiveCell.Offset(0, 17) = Campo_Orç.Text
ActiveCell.Offset(0, 18) = Campo_Cred.Text
ActiveCell.Offset(0, 19) = Campo_AV.Text
ActiveCell.Offset(0, 20) = Combo_Tec.Text
ActiveCell.Offset(0, 21) = Campo_Pronta.Text
ActiveCell.Offset(0, 22) = Campo_NAP.Text
ActiveCell.Offset(0, 23) = Campo_Retirada.Text
ActiveCell.Offset(0, 24) = Campo_Obs_1.Text
ActiveCell.Offset(0, 25) = Campo_Obs_2.Text
ActiveCell.Offset(0, 26) = Campo_Obs_3.Text
ActiveCell.Offset(0, 27) = Campo_Obs_4.Text
ActiveCell.Offset(0, 28) = Campo_Obs_5.Text
ActiveCell.Offset(0, 29) = Campo_Obs_6.Text
End If
ActiveCell.Offset(1, 0).Activate
Wend
'Mensagem de gravação
MsgBox "Alteração efetuada com sucesso "
End Sub
Private Sub Botão_Imprimir_Click()
'Para escolher impressora
Application.Dialogs(xlDialogPrinterSetup).Show
'Ativar função imprimir
Me.PrintForm
End Sub
Private Sub Botão_Salvar_Click()
'Variavel Total registro armazena a quantidade de linhas preenchidas
totalregistro = Worksheets("BancodeDados").UsedRange.Rows.Count + 1
Worksheets("BancodeDados").Select
'Começo da gravação dos Dados
Cells(totalregistro, 1) = Campo_NOS
Cells(totalregistro, 2) = Campo_Nome
Cells(totalregistro, 3) = Campo_End
Cells(totalregistro, 4) = Campo_N
Cells(totalregistro, 5) = Campo_Bairro
Cells(totalregistro, 6) = Campo_Cidade
Cells(totalregistro, 7) = Campo_Telefone
Cells(totalregistro, 8) = Campo_NRA
Cells(totalregistro, 9) = Campo_Revendedor
Cells(totalregistro, 10) = Campo_Data
Cells(totalregistro, 11) = Campo_NNF
Cells(totalregistro, 12) = Campo_Eq
Cells(totalregistro, 13) = Campo_Obs
Cells(totalregistro, 14) = Combo_Recebido
Cells(totalregistro, 15) = Campo_Nome_2
Cells(totalregistro, 16) = Campo_Eq_2
Cells(totalregistro, 17) = Campo_Data_2
Cells(totalregistro, 18) = Campo_Orç
Cells(totalregistro, 19) = Campo_Cred
Cells(totalregistro, 20) = Campo_AV
Cells(totalregistro, 21) = Combo_Tec
Cells(totalregistro, 22) = Campo_Pronta
Cells(totalregistro, 23) = Campo_NAP
Cells(totalregistro, 24) = Campo_Retirada
Cells(totalregistro, 25) = Campo_Obs_1
Cells(totalregistro, 26) = Campo_Obs_2
Cells(totalregistro, 27) = Campo_Obs_3
Cells(totalregistro, 28) = Campo_Obs_4
Cells(totalregistro, 29) = Campo_Obs_5
Cells(totalregistro, 30) = Campo_Obs_6
'Mensagem de gravação
MsgBox "O. S. Salva"
'Salvar planilha automaticamente
ActiveWorkbook.Save
End Sub
Private Sub Botão_Cancelar_Click()
Unload Nova_OS
Pag_Inicial.Show
End Sub
Private Sub Combo_Localizar_OS_Click()
totalregistro = Worksheets("bancodedados").UsedRange.Rows.Count
For i = 0 To totalregistro
If Combo_Localizar_OS.ListIndex = i Then
'Preencher as caixas
Campo_NOS = Cells(i + 2, 1)
Campo_Nome = Cells(i + 2, 2)
Campo_End = Cells(i + 2, 3)
Campo_N = Cells(i + 2, 4)
Campo_Bairro = Cells(i + 2, 5)
Campo_Cidade = Cells(i + 2, 6)
Campo_Telefone = Cells(i + 2, 7)
Campo_NRA = Cells(i + 2, 8)
Campo_Revendedor = Cells(i + 2, 9)
Campo_Data = Cells(i + 2, 10)
Campo_NNF = Cells(i + 2, 11)
Campo_Eq = Cells(i + 2, 12)
Campo_Obs = Cells(i + 2, 13)
Combo_Recebido = Cells(i + 2, 14)
Campo_Nome_2 = Cells(i + 2, 15)
Campo_Eq_2 = Cells(i + 2, 16)
Campo_Data_2 = Cells(i + 2, 17)
Campo_Orç = Cells(i + 2, 18)
Campo_Cred = Cells(i + 2, 19)
Campo_AV = Cells(i + 2, 20)
Combo_Tec = Cells(i + 2, 21)
Campo_Pronta = Cells(i + 2, 22)
Campo_NAP = Cells(i + 2, 23)
Campo_Retirada = Cells(i + 2, 24)
Campo_Obs_1 = Cells(i + 2, 25)
Campo_Obs_2 = Cells(i + 2, 26)
Campo_Obs_3 = Cells(i + 2, 27)
Campo_Obs_4 = Cells(i + 2, 28)
Campo_Obs_5 = Cells(i + 2, 29)
Campo_Obs_6 = Cells(i + 2, 30)
Exit Sub
End If
Next
End Sub
Private Sub UserForm_Initialize()
' Inserir nome do atendente
Combo_Recebido.AddItem "Bianca"
Combo_Recebido.AddItem "Henrique"
Combo_Recebido.AddItem "Jéssica"
Combo_Recebido.AddItem "Marcos"
' Inserir nome do técnico
Combo_Tec.AddItem "Adriano"
Combo_Tec.AddItem "Alex"
Combo_Tec.AddItem "João"
Combo_Tec.AddItem "Paulo"
Combo_Tec.AddItem "Uilquer"
'código para campo localizar
totaldelinhas = Worksheets("bancodedados").UsedRange.Rows.Count
Combo_Localizar_OS.RowSource = "bancodedados!b2:b" & totaldelinhas
'Contagem automatica das ordens de serviço
totalregistro = Worksheets("bancodedados").UsedRange.Rows.Count
For i = 0 To totalregistro
Plan1.Select
linha = 2
cont = i
Do Until Sheets("plan1").Cells(linha, 1) = ""
linha = linha + 1
cont = cont + 1
Loop
Campo_NOS.Text = cont
Next
End Sub