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

Preguntas similare

Leer las respuestas

#6 klomkbock
30/06/2006 - 22:20 | Informe spam
Disculpame por ser un pesado, pero estos procedimientos estan un poco
mejorados (creo)(los otros era de hace tiempo)

Public Sub LlenarRegistro2(nroLinea As Long, vrtDatosLinea As Variant)
Dim iC As Byte
Application.ScreenUpdating = False
For iC = 0 To UBound(vrtDatosLinea)
Range("a" & nroLinea).Offset(0, iC) = vrtDatosLinea(iC)
Next
Application.ScreenUpdating = True
End Sub

Private Sub NuevoRegistro2()
Dim LineaNueva As Range, varLineaNueva As Variant
Dim nroFin As Long
With Worksheets("Listado")
Application.ScreenUpdating = False
'' busca la ultima fila con datos de la columna "a"
'' y le suma 1 (nº de fila de la siguiente fila)
nroFin = .Range("a65536").End(xlUp).Row + 1
'' creas la matriz con los nombres de tus controles,
'' si el proc. no esta en el modulo del formulario
'' debes hacer referencia a el Pej:
'' With Formulario1.y anteponer un punto a cada control..
varLineaNueva = Array(Control1, Control2, Control3)
'' End With ''cierras el with si lo has usado
'' aqui pasa las variables a los argumentos del otro procedimiento
Call LlenarRegistro(nroFin, varLineaNueva)
Application.ScreenUpdating = True
End With
End Sub

un saludo
Respuesta Responder a este mensaje
#7 Josema
30/06/2006 - 22:22 | Informe spam
Gracias por la aclaración Iván. La verdad que hay montones de cosas, espero
poder con todas.
Un saludo
Josema


"Ivan" escribió en el mensaje
news:
Hola Josema

PD: si estas probando el codigo que te mande antes y no quieres que te
ordene el rango (no me he dado cuenta de quitarlo yo), elimina la
instruccion .Activate y la que va inmediatamente detras (que usa .Short),
y si quieres que te ordene por algun cmpo concreto cambia ("K1") por una
celda de la columna de ordenacion. Tambien (posiblemente) puedes quitar la
propiedad Text de los controles de la matriz. Por cierto este
procedimiento tendrias que ponerlo en el modulo del formulario donde esten
los controles, si no, deberias especificar el formulario en que se
encuentran (pej: With Formulario1 .TextBox1, TextBox2,)


un saludo
ivan

Josema wrote:

Gracias Iván, ya van saliendo algunas cosas, entre todos es más sencillo.
Un saludo
Josema





Respuesta Responder a este mensaje
#8 klomkbock
30/06/2006 - 22:46 | Informe spam
Hola de nuevo, Josema, hay un error en el ultimo procedimiento, la
precipitacion me pierde.

Quedaria asi, espero:

Public Sub LlenarRegistro2(nroLinea As Long, vrtDatosLinea As Variant)
Dim iC As Byte
Application.ScreenUpdating = False
For iC = 0 To UBound(vrtDatosLinea)
Range("a" & nroLinea).Offset(0, iC) = vrtDatosLinea(iC)
Next
Application.ScreenUpdating = True
End Sub

Private Sub NuevoRegistro2()
Dim varLineaNueva As Variant, nroFin As Long
With Worksheets("Listado") 'la hoja donde este la lista
Application.ScreenUpdating = False
nroFin = .Range("a65536").End(xlUp).Row + 1
varLineaNueva = Array(Control1, Control2, Control3)
Call LlenarRegistro2(nroFin, varLineaNueva)
Application.ScreenUpdating = True
End With
End Sub

Otra PD: si tu lista no empieza en la columna "A" cambia el "a" de ("a" &
nroLinea) del primer procedimiento y la de ("a65536") del segundo, por la
letra de la columna que corresponda.
Como te comentaba, esto es un poco aprender sobre la marcha.
Un saludo.
Ivan


Josema wrote:

Gracias por la aclaración Iván. La verdad que hay montones de cosas, espero
poder con todas.
Un saludo
Josema


"Ivan" escribió en el mensaje
news:
> Hola Josema
>
> PD: si estas probando el codigo que te mande antes y no quieres que te
> ordene el rango (no me he dado cuenta de quitarlo yo), elimina la
> instruccion .Activate y la que va inmediatamente detras (que usa .Short),
> y si quieres que te ordene por algun cmpo concreto cambia ("K1") por una
> celda de la columna de ordenacion. Tambien (posiblemente) puedes quitar la
> propiedad Text de los controles de la matriz. Por cierto este
> procedimiento tendrias que ponerlo en el modulo del formulario donde esten
> los controles, si no, deberias especificar el formulario en que se
> encuentran (pej: With Formulario1 .TextBox1, TextBox2,)
>
>
> un saludo
> ivan
>
> Josema wrote:
>
>> Gracias Iván, ya van saliendo algunas cosas, entre todos es más sencillo.
>> Un saludo
>> Josema
>
>
>
Respuesta Responder a este mensaje
#9 Josema
01/07/2006 - 14:44 | Informe spam
Gracias Iván, ayer no fui capaz de hacerlo funcionar, puede ser por esos
detalles que me comentas, voy a ver si hoy lo consigo. He construido un
pequeño ejemplo para ver si soy capaz de hacerlo funcionar. Espero que ahora
vaya bien.
Un saludo y muchas gracias
Josema
Respuesta Responder a este mensaje
#10 klomkbock
01/07/2006 - 22:13 | Informe spam
Hola Josema

Aparte de bastante ignorancia, tengo una obsesiva mania por hacer las
cosas lo mas enrevesado y retorcido posible. Te mando otro codigo que
posiblemente te simplifique todo bastante.

Si tienes asignado un boton para agregar los datos de los controles a la
hoja prueba a usar este codigo en el evento click del boton.

Primero te lo explico un poco:

=> Ctrls = aqui sustituye Combo1, Combo2, etc, por los nombres de los
controles en los que hayas(/vayas a) introducido los datos para la hoja

=>iC = actua como indice de columna ->no tienes que tocar nada

=> nF = nº de la 1ª fila sin datos ->no tienes que tocar nada salvo si ->>>
donde x= letra de la columna mas 'larga'





=> "Hoja1" = sustituyelo por el nombre de la hoja en la que tengas la lista
(entre comillas)



=> "a" = si la primera columna de tu lista no esta en la columna A >>
sustituye "a" en .Range("a" & ...) por -> "la letra de la primera columna de




la lista"

Private Sub cmdAñadir_Click()
Dim Ctrls As Variant, ic As Byte, nF As Long
Ctrls = Array(Combo1, Combo2, Combo3, Combo4, Combo5)
Application.ScreenUpdating = False
With Worksheets("Hoja1")
nF = .[a65536].End(xlUp).Row + 1
For ic = 0 To UBound(Ctrls)
.Range("a" & nF).Offset(0, ic) = Ctrls(ic)
Next
End With
Application.ScreenUpdating = True
End Sub

Espero haberme explicado
Un saludo y disculpa por mis meteduras de pata
Ivan
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida