Desplazar filas con algún comando en VB

Muchas vueltas me di antes de entrar acá así que en cierto modo es mi último recurso.
Bueno, mi consulta es la siguiente, estoy creando un formulario que es para llevar un registro diario del consumo de aceros en equipos mineros.
Me enviaron a hacer un "programa" con interfaz de fácil uso para quienes lo ocupen. No tenía idea ni de macros ni de VB, mi única experiencia en programar fue con JAVA años atrás, pero esta no es mi área.
Sin embargo de a poco he ido aprendiendo harto hasta que llegué a mi piedra de tope. Tengo toda la interfaz lista y estoy programando los botones a utilizar. Tengo muchos textbox, 247 para ser exacto, por lo que la forma más fácil que se me ocurrió fue que cada textbox se asignara a una celda contigua hacia la derecha, es decir, textbox1 celda "A2" ... Textbox247 celda "IM2"
Las columnas indican los diferentes datos a ingresar, ej: columna "A" Fecha; columna "B" turno; columna "C" operario, etc..
Lo primero: veo que al ingresar los datos en el textbox se anotan automáticamente en la celda asignada, pero no sé si será necesario un botón "guardar" o quedan grabados al momento de escribir en el textbox.
Y lo principal, necesito un botón "añadir" tal que cuando se presione, me guarde la información del formulario, me deje el formulario en blanco y que quede lista una nueva fila para ingresar datos, con la otra guardada. Puede ser guardada en cualquier orden, por lo que ingresar los datos en una nueva fila, o desplazar las filas hacia abajo, me da igual. He visto en otros foros o acá mismo que lo que hacen es desplazarse hacia abajo en las filas pero por celdas. A mi no me sirve pues claramente tengo 247 columnas lo cual se haría muy tedioso.
Lo otro sólo si se puede, no sé si exista algún algoritmo para asignar las celdas a cada textbox, porque asignar 200 y tantas veces también es algo latero, pero no se me ocurre nada para realizar el algoritmo con las letras, pues cada textbox es en distinta columna pero misma fila:
Private Sub TextBox001_Change()
Range("A2").Select
ActiveCell.FormulaR1C1 = TextBox001
End Sub
Private Sub TextBox002_Change()
Range("B2").Select
ActiveCell.FormulaR1C1 = TextBox002
End Sub
.
.
.
Private Sub TextBox247_Change()
Range("IM2").Select
ActiveCell.FormulaR1C1 = TextBox247
End Sub

1 respuesta

Respuesta
2
Aquí te pongo una rutina para que la tomes de ejemplo:
Dim SigFila As Long
' Aségurese de que la Hoja1 está activa. O la hoja que tu quieres
Sheets("Sheet1").Activate
' Asegúrese de que se ha introducido un nombre
If TextName.Text = "" Then
       MsgBox "Debe introducir un nombre."
       TextName.SetFocus
       Exit Sub
End If
' Determine la siguiente fila vacía
NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
' Traslade el nombre
Cells(SigFila, 1) = TextName.Text
Cells(SigFila, 2) = TextBox2.Text   'Pasar el Apellido
' Limpie los controles para la siguiente entrada
TextName.Text = ""
TextBox2.Text = ""
OptionUnknown = True
TextName.SetFocus
'Volver a tu hoja
Sheets("MiHoja"). Active
[email protected]
Gracias por la respuesta, el problema es la definición de las textbox que como dije son 247, pero encontré una mejor forma de optimizar el asunto y voy por otra dirección. De todas maneras muchas gracias,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas