Formularios con VBA

Estado
Cerrado para nuevas respuestas

MdCdCB

Nuevo Miembro
Miembro
Hola, de nuevo! El segundo problema que se me resiste es el siguiente. En el archivo para mantener el formato y evitar tropecientas versiones, he creado formularios Excel para las páginas donde hay registro de datos y este es sencillo.

Por la complejidad del los formularios VBA y la falta de tiempo se trata de simple formularios Excel que luego mediante una macro se abren desde la página principal.

El problema es que VBA al abrirlos no "respeta" el orden y se pone a escribir no sé según qué criterio aún habiendo celdas vacías entre medias. :eek:

¿Cuál es "el truco" o la instrucción para que al abrirlo el nuevo registro lo escriba en la primera fila vacía?
Insertar CODE, HTML o PHP:
Sub InvoiceTracker_Link()

'

' InvoiceTracker_Link

'This macro opens the worksheet Invoice tracker and then the dataform to fill in, when this finishes then go back to the worksheet TITLE-INDEX

'

    Sheets("Invoice tracker").Select

    Range("a1:eek:1").Select

    Sheets("Invoice tracker").ShowDataForm

    Sheets("TITLE-INDEX").Select

    End Sub
Muchas gracias, confio en que alguien pueda ayudarme!!
 

rob1104

Super Moderador
Super Moderador
Hola, con gusto te ayudo, pero podrías replantear tu pregunta, quiza con algún ejemplo, ya que no entendí muy bien, el código que pusiste siempre tiene el rango a1:eek:1.

Saludos
 

MdCdCB

Nuevo Miembro
Miembro
Hola, y mil gracias!

Retomo el tema.

Para evitar cambios de formato porque van a ser muchos los usuarios, los datos se van a introducir en Excel mediante formularios (los simplones de Excel).

Entonces en la primera hoja hay un botón para cada hoja con formulario. Este botón tiene asignado una macro:
Insertar CODE, HTML o PHP:
Sub InvoiceTracker_Link()
'
' InvoiceTracker_Link
'This macro opens the worksheet Invoice tracker and then the dataform to fill in, when this finishes then go back to the worksheet TITLE-INDEX
'
Sheets("Invoice tracker").Select
Range("a1:eek:1").Select
Sheets("Invoice tracker").ShowDataForm
Sheets("TITLE-INDEX").Select
End Sub
Esta macro abrirá directamente el formulario y al terminar el registro vuelve a la hoja TITLE-INDEX donde están los botones.
Hasta ahí todo va bien, pero el problema es que hace registros en p.ej. la linea 24 aunque la última línea con datos sea la línea 5, es decir, se salta desde la línea 6-23 que las deja vacías.
Donde no avanzo es en entender porqué o con qué lógica hace eso, y como hacerle comenzar cada registro en la primera línea vacía.
El rango "A1:O1" son las columnas del formulario excel (los encabezados del formulario).

No sé si ahora está más claro.
 

MdCdCB

Nuevo Miembro
Miembro
Hola, de nuevo!
No sé si mi última explicación fue más clara. He estado en otros temas, pero aún sigo con el "problemilla" de los formularios Excel de mi correo orginal. :eek:
Alguna idea para repararlo?
Gracias,
 

mike_myers

Nuevo Miembro
Miembro
Puedes usar la función IsEmpty() para saber si la celda -o el rango- están vacios.
Ejemplo:
MsgBox IsEmpty(ActiveSheet.Range("a24").Value)
MsgBox IsEmpty(ActiveSheet.Range("A24:O24").Value) 'si una celda no esta vacia te devuelve false
 
Estado
Cerrado para nuevas respuestas
Arriba Pie