Registro na mesma linha


#1

Boa tarde galera, gostaria de agradecer pois esse fórum tem muito me ajudado.

Criei um codigo que faz um novo registro na primeira linha vazia que encontrar, porem no mesmo formulário eu tenho a a opção de alterar um registro já existente, mas quando registro alguma alteração ele cria esse novo registro em uma nova linha. Alguem poderia me orientar como altero esse codigo para que ele considerando os campos de NF e Cod ele registre na mesma linha ? Segue o código para a verificação:

Private Sub cmdGravar_Click()

'Ativar a primeira planilha
ThisWorkbook.Worksheets(“Nfs Entrada”).Activate
’Selecionar a célula A3
Range(“A3”).Select

'Procurar a primeira célula vazia
Do
If Not (IsEmpty(ActiveCell)) Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell) = True

'Carregar os dados digitados nas caixas de texto para a planilha
ActiveCell.Value = txtCodArt.Value
ActiveCell.Offset(0, 1).Value = txtCodProd.Value
ActiveCell.Offset(0, 2).Value = txtCodForn.Value
’ActiveCell.Offset(0, 3).Value = cboEstado.Value
’ActiveCell.Offset(0, 4).Value = cboCidade.Value

ActiveCell.Offset(0, 3).Value = txtNfEnt.Value
ActiveCell.Offset(0, 4).Value = txtQtsItens.Value
ActiveCell.Offset(0, 5).Value = txtChaveAcesso.Value

ActiveCell.Offset(0, 6).Value = txtFornecedor.Value
ActiveCell.Offset(0, 7).Value = txtDescProd.Value
ActiveCell.Offset(0, 8).Value = txtDtEmissao.Value
ActiveCell.Offset(0, 9).Value = txtQtdNota.Value
ActiveCell.Offset(0, 10).Value = txtSaldo.Value

'Condição para evitar que o saldo do item seja negativo
If txtQtdNota.Value > txtQtdUsada.Value Then

ElseIf OptionButton1.Value = True Then
ActiveCell.Offset(0, 11).Value = txtQtdUsada.Value
ActiveCell.Offset(0, 12).Value = txtDataUso.Value

ElseIf OptionButton2.Value = True Then
ActiveCell.Offset(0, 13).Value = txtQtdUsada.Value
ActiveCell.Offset(0, 14).Value = txtDataUso.Value

ElseIf OptionButton3.Value = True Then
ActiveCell.Offset(0, 15).Value = txtQtdUsada.Value
ActiveCell.Offset(0, 16).Value = txtDataUso.Value

ElseIf OptionButton4.Value = True Then
ActiveCell.Offset(0, 17).Value = txtQtdUsada.Value
ActiveCell.Offset(0, 18).Value = txtDataUso.Value

ElseIf OptionButton5.Value = True Then
ActiveCell.Offset(0, 19).Value = txtQtdUsada.Value
ActiveCell.Offset(0, 20).Value = txtDataUso.Value

ElseIf OptionButton6.Value = True Then
ActiveCell.Offset(0, 21).Value = txtQtdUsada.Value
ActiveCell.Offset(0, 22).Value = txtDataUso.Value

ElseIf OptionButton7.Value = True Then
ActiveCell.Offset(0, 23).Value = txtQtdUsada.Value
ActiveCell.Offset(0, 24).Value = txtDataUso.Value

ElseIf OptionButton8.Value = True Then
ActiveCell.Offset(0, 25).Value = txtQtdUsada.Value
ActiveCell.Offset(0, 26).Value = txtDataUso.Value

Else: MsgBox “Saldo do item insuficiente”

End If


#2

Fala, @adeilson. Tudo bem?

Primeiro você precisa definir como quer que o código funcione, existem diferentes maneiras de fazer isso. A mais simples e comum, é ter códigos separados, um que altera e outro que insere, normalmente atribuídos a botões “Alterar” e “Inserir”.


#3

esse aqui é o print do meu form. Quando eu insiro o cod do produto e dou um procurar, ele mostra nos demais text box os dados das células, quando eu alterar mas o cod art e o a NF for a mesma, eu queria que ele subscrevesse os dados, agora se a nota for alterada ou o cod art, ai sim ele insere uma nova linha. Pode até ser algo diferente, o que for mais simples, mas o ideia é manter um único formulário, por isso não criei outro botão.


#4

@adeilson, manda a sua planilha para exlplanilhas@gmail.com para eu dar uma olhada. Se eu escrever o código diretamente aqui sem depurar vou acabar deixando algo passar ou cometer algum erro.


#5

Opa @xavier já mandei no email a planilha. Obrigado mais uma vez.


#6

Te mandei de volta, @adeilson.