Excel - ¿Excel, ingresar datos en la siguiente fila vacía con una macro?

   
Vista:

¿Excel, ingresar datos en la siguiente fila vacía con una macro?

Publicado por Carlos Valdivia Paredes (1 intervención) el 04/07/2016 23:42:20
Me podrían ayudar por favor, estoy desarrollando un proyecto en excel e ingrese una macro para llenar una base de datos, esta macro debe seleccionar de primera mano si lo que requiere el solicitante es un ingreso o una salida de un bien, sin embargo parece que mi macro no lee la fila de salida (por estar la primera casilla vacía) y cuando coloco un ingreso automáticamente después de una salida la coloca encima, por favor su apoyo.

Esta es mi macro colocada en el botón agregar:

1
2
3
4
Private Sub UFAgregar_Click()
Dim iFila As Long
Dim ws As Worksheet
Set ws = Worksheets(1)

encuentra la siguiente fila vacía
1
iFila = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

verifica que se ingrese un fecha
1
2
3
4
5
If Trim(Me.UFFecha.Value) = "" Then
Me.UFFecha.SetFocus
MsgBox "Debe agregar una fecha"
Exit Sub
End If

verifica que se ingrese un nombre
1
2
3
4
5
If Trim(Me.UFUnidaddemedida.Value) = "" Then
Me.UFUnidaddemedida.SetFocus
MsgBox "Debe agregar una cantidad"
Exit Sub
End If

copia los datos a la base de datos
1
2
3
4
5
6
ws.Cells(iFila, 1).Value = Me.UFIngreso.Value
ws.Cells(iFila, 2).Value = Me.UFSalida.Value
ws.Cells(iFila, 3).Value = Me.UFFecha.Value
ws.Cells(iFila, 4).Value = Me.ComboBox1.Value
ws.Cells(iFila, 5).Value = Me.UFUnidaddemedida.Value
ws.Cells(iFila, 6).Value = Me.ComboBox2.Value

limpaelformulario
1
2
3
4
5
6
7
8
9
Me.UFIngreso = ""
Me.UFSalida = ""
Me.UFFecha.Value = ""
Me.ComboBox1 = ""
Me.UFUnidaddemedida = ""
Me.ComboBox2 = ""
Me.UFUnidaddemedida.SetFocus
 
End Sub
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

¿Excel, ingresar datos en la siguiente fila vacía con una macro?

Publicado por JHON JAIRO (23 intervenciones) el 13/07/2016 06:47:41
Hola, revisando el codigo que tienes tengo dudas en esta linea:

1
iFila = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

Ya que si por ejemplo tienes 300 registros en el rango A1:H300 y la celda A20, está vacia, la tomará como el último registro

Yo he utilizado, en macros como esta el siguiente codigo espero te sirva:

1
2
3
4
5
6
7
8
Sheets("Hoja1").Select            'selecciona la hoja 1
Range("A1").Select 'el control se hará sobre la columna A, a partir de la fila1
While ActiveCell.Value <> ""
    ActiveCell.Offset(1, 0).Select 'si la celda contiene datos, pasa a la fila siguiente
Wend
filab = ActiveCell.Row  'guarda en la variable fila1 el número de la primer fila sin datos.
 
controla1 = filab - 1  'ultima fila con informacion en la columna A

O prueba cambiando la linea que tienes por esto:

1
iFila = ws.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row

(el cambio revisa por la columna B)
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