Macro que busca el número más alto en BD para insertar dicho número +1 a la hora de hacer un nuevo registro con un formulario

Tengo el siguiente código que utilizo en mi formulario para que al activarse me coloque en un textbox el siguiente código de registro. En este caso todos los registros van de menos a más.

CódigoBox = Val(Range("A3:A450"). Find(""). Offset(-1, 0)) + 1 

El problema es que si ordeno la base de datos por ejemplo por tipo, los códigos se van sucediendo aleatoriamente al bajar las filas y cuando abro el formulario me coloca +1 del último código, con lo cual, se dobla el código.

¿Cómo hago que se recorra la columna A, encuentre el nº más alto y coloque +1 para el siguiente registro?

Respuesta
1

No dice donde se copiara el Nuevo NO° en el caso que fuese en la próxima celda en blanco

Seria así

sub busca()

Dim rango
Set rango = Sheets("hoja1").Range("b2:b13")
Set busca = rango.Find(Application.WorksheetFunction.Max(rango), LookIn:=xlValues, lookat:=xlWhole)
If Not busca Is Nothing Then
Range("b300").End(xlUp).Offset(1, 0) = busca + 1
End If

end sub

Pero si es en otro lado solo dinos donde quiere se copie

Si et silve no olvides valorar para cerrar la pregunta

$$\begin{align}&saludos \end{align}$$

Hoja1 es el nombre de tu hoja

Para tu formulario seria así

En el evento Initialize

Dim rango
Set rango = Sheets("hoja1").Range("a3:a450")
Set busca = rango.Find(Application.WorksheetFunction.Max(rango), LookIn:=xlValues, lookat:=xlWhole)
If Not busca Is Nothing Then
TextBox3 = busca + 1
End If

Donde hoja1 seria el nombre de tu hoja y textbox3 es el nombre de tu textbox

Ahora si no olvides valora si te silve para cerrar la pregunta

$$\begin{align}&hola\end{align}$$

El código se va a un textbox y cuando guardo los datos se guardan en una nueva fila donde en la columna A va el código que se ha generado automáticamente.

El código que me has dado, de esa manera no se ajusta, como lo paso al textbox?

Yo tengo mi código dentro de 

Private Sub UserForm_Initialize()
CódigoBox = Val(Range("A4:A1000").Find("").Offset(-1, 0)) + 1
End sub

Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas