Sobre Formulario

30/06/2006 - 18:12 por Josema | Informe spam
Hola de nuevo, continuo con la pequeña aplicación de Excel y
naturalmente os sigo pidiendo ayuda. Veréis ahora he conseguido hacer un
formulario y consigo llamarlo a la hoja en la que estoy trabajando.
Le he puesto los mismos nombres de los campos de la tabla: Núm.Recibo,
Apellidos y
Nombre, Cantidad, Depositario, Fecha, Hora y Turno.
Lo que quisiera es que lo que escriba en cada uno de esos campos lo
lleve a las celdas del mismo nombre, pero si tengo ya llena la A1, que
comience en la A2. Si estuviera llena la A2, pues tendría que ir a la A3 y
así sucesivamente.
El lugar donde se encuentran cada una de ellas es:

Núm.Recibo,(A2)
Apellidos y Nombre (B2)
Cantidad(C2)
Depositario(D2)
Fecha (E2)
Hora y Turno (F2)
En A1, B1, C1, etc.. es donde están los nombres puestos

A ver si podéis enviarme una ayudita, os lo agradecería.
Un saludo y muchas gracias
Josema
 

Leer las respuestas

#1 klomkbock
30/06/2006 - 19:53 | Informe spam
Hola josema

Para lo que parece que quieres hacer lo mas indicado probablemente es lo
que te comento el otro dia HM, usar el formulario integrado en excel, que
te permite buscar registros y/o añadirlos.

En cualquier caso, y sin tener mucha idea, para rellenar la primera celda
libre de un campo podria valerte algo parecido a esto:

Pej.: para la columna A de la hoja "Hoja":

Worksheets("Hoja").Range("a65536").End(xlup).Offset(1,0).Value = aqui el
control en que introduces los datos.

Tambien te adjunto un procedimiento (posiblemente bastante imperfecto) que
yo uso para hacer lo que tu dices, llenar un registro con controles de un
formulario. Tendrias que cambiar el contenido de la matriz (varLineaNueva)
por los nombres de tus controles y luego...

Private Sub LlenarRegistro(rngLinea As Range, vrtDatosLinea As Variant)
Dim iC As Byte
Application.ScreenUpdating = False
For iC = 0 To rngLinea.Columns.Count - 1
Range("a" & rngLinea.Row).Offset(0, iC) = vrtDatosLinea(iC)
Next
Application.ScreenUpdating = True
End Sub

Private Sub NuevoRegistro()
Dim LineaNueva As Range, varLineaNueva As Variant
With Worksheets("Listado")
.Activate
.Range(.Range("a1"), .Range("k65536").End(xlUp)) _
.Sort key1:=.Range("K1"), header:=xlYes
Application.ScreenUpdating = False
Set rngFinL = .Range("a65536").End(xlUp).Offset(1, 0)
Set LineaNueva = .Range(rngFinL, rngFinL.Offset(0, 11))
varLineaNueva = Array(txtTituloNuevo.Text, txtNombreNuevo _
.Text & " " & txtApellidosNuevo.Text, cmbGeneroNuevo.Text, _
cmbTemaNuevo.Text, cmbPaisNuevo.Text, cmbLoTieneNuevo.Text, _
txtApellidosNuevo.Text, txtObservacionesNuevo.Text, _
txtDejadoANuevo.Text, txtElDiaNuevo.Text, txtNroFichaNuevo.Text, _
txtNombreNuevo.Text)
Call LlenarRegistro(LineaNueva, varLineaNueva)
Application.ScreenUpdating = True
End With
End Sub

Luego dependera de muchos factores como vaya encajado. Puede ir en un
procedimiento de un modulo normal, o en uno del modulo del formulario, y
en cada caso sera diferente. Podra estar asociado al evento click de un
boton de comando u otras muchas variables. Y otras muchas cosas que pueden
influir. Todo depende de lo que quieras hacer. Me temo que en cuanto al
combo de tu otra consulta pase tres cuartos de lo mismo.

Supongo que si explicas un poco mas tus intenciones, lo que llevas hecho
(codigo) y hasta donde quieres llegar sera mas facil ayudarte.

De todas formas si lo que quieres es ir aprendiendo, te recomiendo que te
armes de paciencia y que insistas con la ayuda de VBA y con la lectura de
las respuestas de estos foros. Te lo dice uno que esta en ello.

Disculpa por el sermón, pero solo hablo de lo que yo estoy haciendo.
Espero que algun experto se anime a echarte una mano.

Un saludo y hasta pronto.
Ivan

Preguntas similares