Foros del Web » Soporte técnico » Ofimática »

Problema con una macro

Estas en el tema de Problema con una macro en el foro de Ofimática en Foros del Web. Hola gente, tengo un tema con un Formulario que tengo en VBA para excel. Lo que quiero hacer es que el form coloque en celdas ...
  #1 (permalink)  
Antiguo 05/12/2006, 15:25
Avatar de juancace  
Fecha de Ingreso: febrero-2006
Ubicación: Zona Norte del Gran Bs As
Mensajes: 89
Antigüedad: 18 años, 2 meses
Puntos: 0
De acuerdo Problema con una macro

Hola gente, tengo un tema con un Formulario que tengo en VBA para excel.
Lo que quiero hacer es que el form coloque en celdas lo que cargo en los textbox y que se posicione en la fila siguiente, para cargar otros datos.
El tema es que no se como hacer para que el siguiente dato se coloque en la fila siguiente. Lo tengo hecho para que inserte una fila, pero de esa forma siempre me va a quedar el dato que ingresé en la fila de abajo.
PAso el codigo para que lo vean:
Private Sub CmdInsertar_Click()
Range("B3").Select
ActiveCell.FormulaR1C1 = TextBox1
Range("C3").Select
ActiveCell.FormulaR1C1 = TextBox2
Range("D3").Select
ActiveCell.FormulaR1C1 = TextBox3
ActiveCell.EntireRow.Insert
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox1.SetFocus
End Sub

Si alguien me puede dar una mano con esto me van a ayundar mucho.
Muchas gracias desde ya!
__________________
JuAnCaCe :arriba:
  #2 (permalink)  
Antiguo 05/12/2006, 17:16
Avatar de Crashman  
Fecha de Ingreso: junio-2004
Mensajes: 335
Antigüedad: 19 años, 10 meses
Puntos: 0
Pruebalo

Prueba esto, la propiedad offset y activecell
Código:
'que no pare hasta encontrar una celda vacia
range("B3").select
Do While Not IsEmpty(activecell.Offset(0, 0))
       activecell.Offset(1, 0).Select
   Loop
'encuentra una celda vacia y la selecciona
ActiveCell.FormulaR1C1 = TextBox1
'corre una columna ( ahora la columna es C)
activecell.offset(0,1).select
ActiveCell.FormulaR1C1 = TextBox2
'corre una columna ( ahora la columna es D)
activecell.offset(0,1).select
ActiveCell.FormulaR1C1 = TextBox3
retrocede a b y baja una fila
activecell.offset(1,-3).select
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox1.SetFocus
End Sub
__________________
En la politica el unico ministerio que sale bien ante el pueblo es la iglesia, promete vida despues de la muerte y nadie a regresado a reclamar...
  #3 (permalink)  
Antiguo 05/12/2006, 17:18
Avatar de Crashman  
Fecha de Ingreso: junio-2004
Mensajes: 335
Antigüedad: 19 años, 10 meses
Puntos: 0
Pruebalo

Prueba esto, la propiedad offset y activecell
Código:
range("B3").select
'encuentra una celda vacia y la selecciona
ActiveCell.FormulaR1C1 = TextBox1
'corre una columna ( ahora la columna es C)
activecell.offset(0,1).select
ActiveCell.FormulaR1C1 = TextBox2
'corre una columna ( ahora la columna es D)
activecell.offset(0,1).select
ActiveCell.FormulaR1C1 = TextBox3
retrocede a b y baja una fila
activecell.offset(1,-3).select
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox1.SetFocus
End Sub
y si quieres seguir en la misma hoja y agregar datos al final de los ya existentes tendrias que insertar este codigo

Código:
sub busca_vacios
'que no pare hasta encontrar una celda vacia
range("B3").select
Do While Not IsEmpty(activecell.Offset(0, 0))
       activecell.Offset(1, 0).Select
Loop
Pruebalo y ajustalo a tus necesidades
__________________
En la politica el unico ministerio que sale bien ante el pueblo es la iglesia, promete vida despues de la muerte y nadie a regresado a reclamar...
  #4 (permalink)  
Antiguo 05/12/2006, 18:54
Avatar de juancace  
Fecha de Ingreso: febrero-2006
Ubicación: Zona Norte del Gran Bs As
Mensajes: 89
Antigüedad: 18 años, 2 meses
Puntos: 0
Muchas Gracias Crashman! Me solucionaste un problema. Mucho no conozco de VBA. Quizas para vos es algo fácil pero para mi... es todo un logro!
Saludos!
__________________
JuAnCaCe :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:05.