Problema con macro que así números de forma automática mediante un UserForm

Tengo un inconveniente con un userform que copia datos de una hoja a otra, tengo un botón que registra los datos captados en el userform, en una parte de mi fórmula le indico al mismo que asigne automáticamente valores en la columna B sumando un 1 al último número utilizado que figura en la fila B. El problema es que si esa última fila está oculta, la macro no recone este número y lo vuelve a asignar. Por ejemplo, si el número 5 es el último y la fila que lo contiene está oculta, vuelve a asignar 5.

Les dejo la fórmula que utilizo y agradezco de ante mano vuestro interés y ayuda:

Private Sub CommandButton1_Click()

TextBox8 = Application.WorksheetFunction.Max _
(Hoja1.Range("B5:B" & Hoja1.Range("B" & Rows.Count).End(xlUp).Row)) + 1

Dim fila As Long
Dim duplicados As Boolean

'Obtener la fila disponible
fila = Application.WorksheetFunction.CountA(Range("B:B")) + 1

'Validar si se han ingresado datos duplicados
For i = 1 To fila
If Cells(i, 3).Value = UserForm2.TextBox1.Value Then
If Cells(i, 4).Value = UserForm2.TextBox2.Value Then
If Cells(i, 5).Value = UserForm2.TextBox3.Value Then
If Cells(i, 6).Value = UserForm2.TextBox4.Value Then
If Cells(i, 7).Value = UserForm2.TextBox5.Value Then
If Cells(i, 8).Value = UserForm2.TextBox6.Value Then
If Cells(i, 9).Value = UserForm2.TextBox7.Value Then
If Cells(i, 2).Value = UserForm2.TextBox8.Value Then
'Se encontraron datos duplicados
MsgBox "Datos duplicados en la fila " & i
duplicados = True
End If
End If
End If
End If
End If
End If
End If
End If
Next i

If Not duplicados Then
'Insertar datos capturados

Cells(fila, 3).Value = UserForm2.TextBox1.Value
Cells(fila, 4).Value = UserForm2.TextBox2.Value
Cells(fila, 5).Value = UserForm2.TextBox3.Value
Cells(fila, 6).Value = UserForm2.TextBox4.Value
Cells(fila, 7).Value = UserForm2.TextBox5.Value
Cells(fila, 8).Value = UserForm2.TextBox6.Value
Cells(fila, 9).Value = UserForm2.TextBox7.Value
Cells(fila, 2).Value = UserForm2.TextBox8.Value
'Notificar al usuario
MsgBox "Número de ID " & UserForm2.TextBox8
End If

End Sub

Entiendo que en esta parte es donde algo debo cambiar:

TextBox8 = Application.WorksheetFunction.Max _

1 Respuesta

Respuesta
1

He encontrado un posible solución, modificando de la siguiente forma:

(Hoja1.Range("B5:B3000" & Hoja1.Range("B" & Rows.Count).End(xlUp).Row)) + 1

Lo que hice fue indicarle específicamente que busque en la columna B desde la fila 5 a la 3.000.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas