Visual Basic para Aplicaciones - Nuevo registro en vba

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 11
Ha aumentado su posición en 29 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Nuevo registro en vba

Publicado por Rodrigo (5 intervenciones) el 27/11/2020 14:49:10
¡¡Hola buenas tardes a todos!! Ante todo gracias por permirtime escribir un post en este foro. Soy nuevo aquí. Tengo un gran consulta y necesitaba la ayuda de alguien. Tengo un inventario en excel y la cuestión es que tengo una macros preparada, pero el fallo viene cuando necesito introducir los datos y que estos pasen a una nueva hoja de excel y que cada vez que se pulse el botón registrar, guarde los nuevos datos consecutivamente en una nueva fila. No hace absolutamente nada, ni me lanza error. Lo he probado de diversas formas pero ninguna ha funcionado.

PD: La hoja donde está el inventario se llama data y en la que quiero que se guarde se llama Expediciones.

Código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub CommandButton3_Click()
 
Dim codigo As Double
Dim cliente As String
Dim fecha As Date
Dim serie As String
 
Dim ultimafila As Double
 
codigo = TextBox1.Value
cliente = TextBox3.Value
fecha = TextBox2.Value
serie = TextBox4.Value
 
ultimafila = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
ultimafila = Sheets("Expediciones").Range("A" & Rows.Count).End(xlUp).Row
 
 
Sheets("Expediciones").Cells(ultimafila + 1, 1) = codigo
Sheets("Expediciones").Cells(ultimafila + 1, 2) = cliente
Sheets("Expediciones").Cells(ultimafila + 1, 3) = fechas
Sheets("Expediciones").Cells(ultimafila + 1, 4) = serie
 
 
End Sub

Eternas gracias de antemano.
¡Un saludo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.163
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Nuevo registro en vba

Publicado por Antoni Masana (391 intervenciones) el 27/11/2020 17:25:38
Algo estas haciendo mal, pero eso ya lo sabes.

Para ver que es lo que falla:

1
2
3
4
5
ultimafila = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
MsgBox "A: " & ultimafila
ultimafila = Sheets("Expediciones").Range("A" & Rows.Count).End(xlUp).Row
MsgBox "B: " & ultimafila
Sheets("Expediciones").Cells(ultimafila + 1, 1) = codigo

Buscas dos veces la última fila, una de las dos tiene que ser la buena o puede que ninguna, deja la que mejor funcione o cambialo por este:

1
2
3
4
UltimaFila = 2
While Cells(UltimaFila, "A") <> ""
    UltimaFila = UiltimaFila + 1
Wend

Si todas la filas están con código esto te devuelve la primera libre, si el código es opcional busca otra columna que siempre se rellene.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 29 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Nuevo registro en vba

Publicado por Rodrigo (5 intervenciones) el 30/11/2020 15:26:03
Hola muchísimas gracias, finalmente se solventó el problema gracias a tu ayuda.
Sólo tuve que modificar un par de cosillas más.
El código final fué este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub CommandButton3_Click()
 
Dim codigo As Double
Dim cliente As String
Dim fecha As Date
Dim serie As String
 
Dim ultimafila As Double
 
codigo = TextBox1.Value
cliente = TextBox3.Value
fecha = TextBox2.Value
serie = TextBox4.Value
 
ultimafila = 1
While Cells(ultimafila, "A") <> ""
    ultimafila = ultimafila + 1
Wend
 
 
Sheets("EXPEDICIONES").Cells(ultimafila, 1) = codigo
Sheets("EXPEDICIONES").Cells(ultimafila, 2) = cliente
Sheets("EXPEDICIONES").Cells(ultimafila, 3) = fecha
Sheets("EXPEDICIONES").Cells(ultimafila, 4) = serie
 
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar