Excel ¿Cómo captar en BD en la hoja, un código alfanumérico a un TextBox en un form

Buscando, algo similar encontré con tú respuesta

Pregunta

"¿Cómo tener un código alfanumérico en un useform bloqueado y automático?"

Pero, no es lo que pretendo

Pero no es justamente lo que he estado buscando

En A existen códigos alfanuméricos seguidos, (correlativos, no aleatorios)

En Excel un formulario con varios controles, 2 de los cuales son TextBox.

Al abrir el form el TextBox4 (Ultimo código) tiene que recibir el ultimo código existente en A y el otro TextBox6 (Próximo código), mostrar el del TextBox4+1.

Uno recibe el ultimo código existente en A, el otro suma 1 del TextBox4.

En el form al pisar el botón Validar datos, tiene que insertar el número del TextBox6 y los restantes datos del Form, en la ultima celda + 1, +1 que es la 1ª libre de arriba hacia abajo y la ultima libre de abajo hacia arriba

¿Algo similar a esto?

Ult = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select

1 Respuesta

Respuesta
1

Si el textbox 4 tiene que recibir el ultimo dato de la col A tendrás:

Textbox4 = RANGE("A" & Ult).Value

Luego en una variable le buscas la parte numérica para incrementar le en 1 tal como hice con la variable "nrotext" en respuesta anterior.

Textbox6 = "parte texto" & nrotext

No indicas ningún ejemplo de tus códigos ... En mi rota. Anterior era de 2 caracteres.

Sdos

Elsa

No entendí bien tu respuesta. Cuanto a los códigos son de 7 números.

En el ejemplo son; las celdas tiene formato Personalizado 0000000

Escribo 1 se presenta en celda 0000001. Tengo en la A hasta el 0000014.

El TextBox4 (ultimo cod) captará el 0000014 y el TextBox6 (Proximo cod) el 0000014+1 = 0000015.

Al abrir (ejecutar) el form, debe verse en TextBox4 0000014 y en el TextBox6 verse 0000015.

Válido los datos y finalizando la validación, en el TextBox4 se ve 0000015 y en el TextBox6 verse 0000016 para la nueva validación

Si cierro el form y vuelvo a ejecutarlo, se debe ver en el TextBox4 0000015 (ultimo cod) y en el TextBox6 0000016 (Próximo cod)

¿Por qué mencionas que tus códigos son 'alfanuméricos'? Tal como los muestras son numéricos con un formato personalizado, pero nada que no puedas sumar + 1.

Al abrir el UF se llenan los textbox en el evento Initialize:

Private Sub UserForm_Initialize()
'ultimo valor según col A
TextBox4 = Format(Range("A" & Rows.Count).End(xlUp).Value, "0000000")
TextBox6 = Format(Val(TextBox4) + 1, "0000000")
End Sub

Cuando validas y guardas los campos en tu hoja, seguramente limpiarás el resto de los controles. Para estos 2 controles podés volver a colocar estas 2 instrucciones. O mejor estas otras:

Private Sub CommandButton3_Click()
'botón de Guardado
'instrucciones de Joamm
'actualiza los textbox
TextBox4 = TextBox6
TextBox6 = Format(Val(TextBox4) + 1, "0000000")
End Sub

PD) No hagas referencia a otras consultas si no son de tu mismo problema, no ayuda.

Si tienes razón, numéricos, alfa numéricos es una mezcla de letras y números ¿NO?

TextBox4 = TextBox6

Al validar SIEMPRE el textBox 4 tiene que captar el ultimo numero de la columna A en la hoja, no el anterior del TextBox6 ¿porque?

Si en la hoja el ultimo registro (en la ultima línea) es el numero 0000215 y el anterior era 0000078, el TextBox6 se tomara el 79 porque tal como esta,

TextBox4 = TextBox6
TextBox6 = Format(Val(TextBox4) + 1, "0000000")

Sobre el TextBox4 En initialise esta bien, el 6 toma el valor del 4 y suma 1

Al validar datos, Private Sub CommandButton3_Click() no puede captar valor anterior del 6 porque si sigo dándole al botón Validación, la numeración se va sumando, aun con los controles limpios y no puede ser.

El TextBox4 deberá tomar  siempre el valor de la ultima línea (ultimo registro) en la hoja1 (BD) tal como esta en Initialize.

LO resolví con

TextBox4 = Format(Range("A" & Rows.Count).End(xlUp).Value, "0000000")TextBox6 = Format(Val(TextBox4) + 1, "0000000")xxxxxxxxxxxxxxxxxxxxxPrivate Sub CommandButton1_Click()'botón de Guardado'instrucciones de Joamm'actualiza los textboxTextBox4 = Format(Range("A" & Rows.Count).End(xlUp).Value, "0000000")TextBox6 = Format(Val(TextBox4) + 1, "0000000")End Sub

No se si tienes algo mejor o mas simple, bien venida sea tu solución o opinion

TextBox4 = Format(Range("A" & Rows.Count).End(xlUp).Value, "0000000")
TextBox6 = Format(Val(TextBox4) + 1, "0000000")
xxxxxxxxxxxxxxxxxxxxx
Private Sub CommandButton1_Click()
'botón de Guardado
'instrucciones de Joamm
'actualiza los textbox
TextBox4 = Format(Range("A" & Rows.Count).End(xlUp).Value, "0000000")
TextBox6 = Format(Val(TextBox4) + 1, "0000000")
End Sub

Ay... si leyeras con más atención:

Reitero mi respuesta:

Al abrir el UF se llenan los textbox en el evento Initialize:

Private Sub UserForm_Initialize()'ultimo valor según col ATextBox4 = Format(Range("A" & Rows.Count).End(xlUp).Value, "0000000")TextBox6 = Format(Val(TextBox4) + 1, "0000000")End Sub

Cuando validas y guardas los campos en tu hoja, seguramente limpiarás el resto de los controles. Para estos 2 controles podés volver a colocar estas 2 instrucciones. O mejor estas otras:

Lo de las 'otras' era una segunda opción, porque en tu consulta inicial indicabas:

'... En A existen códigos alfanuméricos seguidos, (correlativos, no aleatorios)

Bueno, parece que no eran ni alfanuméricos ni seguidos...

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas