roblua,
Conforme o amigo Klark28 disse, repare nas instruções da rotina que Edita / Adiciona um registro :
Sub EditAdd()
Dim emptyRow As Long
If Frm_Cad_Base.TextBox1.Value <> "" Then
flag = False
i = 0
id = Frm_Cad_Base.TextBox1.Value
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 4
Cells(i + 1, j).Value = Frm_Cad_Base.Controls("TextBox" & j).Value
Next j
End If
i = i + 1
Loop
If flag = False Then
For j = 1 To 4
Cells(emptyRow, j).Value = Frm_Cad_Base.Controls("TextBox" & j).Value
Next j
End If
End If
End Sub
Este trecho procura na coluna 1 (A) da guia pelo ID :
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
Caso queira que seja na coluna J, altere para 10, ficando :
Do While Cells(i + 1, 10).Value <> ""
If Cells(i + 1, 10).Value = id Then
Não se esqueça de determinar o valor da variável emptyRow, caso deseje inserir um novo registro.
Altere para a coluna desejada, alterando de A:A para a coluna em questão.
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
Repare também, a variável booleana flag contida no código, pois é ela que determina se será um novo registro ou se será alteração do registro existente.Aqui é que está o famoso "pulo do gato"...
Outra coisa, se atente para os laços For => Next contidos em ambas as situações (Editar e Adicionar, respectivamente).
Caso a variável flag seja igual a False, somente são alterados os dados das colunas 2 a 4, e caso seja True, são inseridos os valores dos campos á partir da coluna A, por isso que laço vai de 1 a 4.
Editar :
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 4
Cells(i + 1, j).Value = Frm_Cad_Base.Controls("TextBox" & j).Value
Next j
End If
Adicionar :
If flag = False Then
For j = 1 To 4
Cells(emptyRow, j).Value = Frm_Cad_Base.Controls("TextBox" & j).Value
Next j
End If
Note que em ambos os casos, as respectivas colunas recebem os valores dos seus respectivos TextBox, determinados pela variável i, então se o cadastro começar na coluna 10, altere também estes laços :
Editar :
Repare no j + 8 :
If Cells(i + 1, 10).Value = id Then
flag = True
For j = 2 To 4
Cells(i + 1, j + 8).Value = Frm_Cad_Base.Controls("TextBox" & j).Value
Next j
End If
Adicionar :
Novamente, repare no j + 9
If flag = False Then
For j = 1 To 4
Cells(emptyRow, j + 9).Value = Frm_Cad_Base.Controls("TextBox" & j).Value
Next j
End If
Espero ter ajudado.
Abs.
Saulo Robles
Postado : 08/01/2020 9:51 am