No se ejecuta la macro

Hola
He creado el siguiente código para introducir datos en excel. De
manera que el código detecte cual es la última fila escrita, se sitúe en
la siguiente y vaya pidiendo la información y la vaya colocando a la
celda correspondiente de la columna.
Private Sub CommandButton2_Click()
Dim Nombre As String
Dim tipología As String
Dim CSAP As String
Dim CANTG As String
Dim Sistema_Operativo As String
Dim Características_Tecnológicas As String
Dim Fecha_Inclusión_Catálogo As Date
Dim Terminal_sin_Alta As Integer
Dim SPGE As Integer
Dim Apoyo_Canje As Integer
Dim Pantalla As Integer
Dim Duración_Batería As String
Dim Dimensiones As Integer
Dim Peso As Integer
Dim Fila As String
Dim Columna As String
Dim jj
Dim nn
Nombre = Val(InputBox("Introduzca_el_nombre_del_nuevo_modelo(return para terminal):", "Nombre"))
tipología = Val(InputBox("Introduzca_la_tipología_del_nuevo_modelo", "Entrar"))
CSAP = Val(InputBox("Introduzca_CSAP", "Entrar"))
CANTG = Val(InputBox("Introduzca_CANTG", "Entrar"))
Sistema_Operativo = Val(InputBox("Introduzca el Sistema_Operativo", "Entrar"))
Características_Tecnológicas = Val(InputBox("Introduzca_las_características", "Entrar"))
Fecha_Inclusión_Catálogo = CDate(InputBox("Introduzca_Fecha_Inclusión", "Entrar"))
Terminal_sin_Alta = Val(InputBox("Introduzca_Terminal_sin_alta", "Entrar"))
Terminal_con_Alta = Val(InputBox("Introduzca_Terminal_con_Alta", "Entrar"))
SPGE = Val(InputBox("Introduzca_SPGE", "Entrar"))
Apoyo_Canje = Val(InputBox("introduzca_El_Apoyo_de_Canje", "Entrar"))
Pantalla = Val(InputBox("Introduzca_el_Tamaño_Pantalla", "Entrar"))
Duración_Batería = Val(InputBox("Introduzca_la_duración_de_la_Batería", "Entrar"))
Dimensiones = Val(InputBox("Introduzca_las_dimensiones_del_terminal", "Entrar"))
Peso = Val(InputBox("Introduzca el peso", "Entrar"))
With ActiveCell
.Value = Nombre
.Offset(0, 4).Value = tipología
.Offset(0, 5).Value = CSAP
.Offset(0, 6).Value = CANTG
.Offset(0, 7).Value = Sistema_Operativo
.Offset(0, 8).Value = Características_Tecnológicas
.Offset(0, 9).Value = Fecha_Inclusión_Catálogo
.Offset(0, 10).Value = Terminal_sin_Alta
.Offset(0, 11).Value = Terminal_con_Alta
.Offset(0, 12).Value = SPGE
.Offset(0, 13).Value = Apoyo_Canje
.Offset(0, 14).Value = Pantalla
.Offset(0, 15).Value = Duración_Batería
.Offset(0, 16).Value = Dimensiones
.Offset(0, 17).Value = Peso
End With
ActiveCell.Offset(1, 0).Activate
"MsgBox("Deseas_continuar",vbYesNo + vbQuestion, "opci" ///no sabría como ponerlo///
End Sub
¿Qué es lo que falla? ¿que no me copia en la celda correspondiente? Soy novata y no se seguir

1 respuesta

Respuesta
1

¿Lo primero que quisiera preguntarte si alguna vez oíste hablar de Userform? Los formularios que se insertan y programan desde el Editor... en lugar de tantos InputBox (*)

Lo que no veo es cuál es tu 'ActiveCell' o celda activa, es decir que no la estás seleccionando en ningún momento.

Entonces antes del With ActiveCell, definí cuál es la primer fila libre con esta instrucción (estoy considerando la col A)

libre = activesheet.range("A65536").End(xlUp).Row+1

Range("A" & libre).Select

With ActiveCell

'a partir de aquí sigue lo tuyo

Otro detalle que falta es consultar por la respuesta SI o NO ante el mensaje final.

sino = MsgBox("Deseas_continuar",vbYesNo + vbQuestion, "ATENCIÓN" )

'si vas a continuar regresa a la marca 'empiezo' sinó finaliza (*)

if sino = vbYes then goto empiezo

End Sub

(*) la marca la tenés que colocar justo debajo del último Dim

Dim nn

empiezo:

Nombre = Val(Inp......

(**) En la sección Macros y Descargas de mi sitio podés encontrar ejemplos de rutinas y de userforms, de descarga gratuita. También te recomiendo la sección Manuales.

Hola Elsa

Acabo de modificar el código, respecto a la pregunta si esta solucionada, pero el resto hay algo que falla. Porque escribo el código y nada más que me salen 0, introduzca el valor que introduzca,el único dato que me escribe bien es la fecha. No me lo coloca en la fila siguiente, en la que está libre, me lo coloca arriba del todo. La celda activa sería la b, que es donde iría el primer dato, el nombre. La celda a, es una casilla de verificación, un checkbox.

Ante todo, muchas gracias.

Te aclaro que aunque veas la casilla en una celda en realidad está sobre la celda, por lo tanto no se asume como celda ocupada..

Si la vinculás con la celda que está debajo aparecerá como 'ocupada' con Verdadero si la tildás, y como False si le quitás el tilde, pero mientras la celda está vacía.

Por eso, tildes o no tildes el checkbox, eso no te dá información de la fila donde tenés que guardar los datos introducidos en tus inputbox. Tenés que seleccionarla manualmente.

Sdos, comentame como lo resolviste.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas