Visual Basic para Aplicaciones - Como le hago

Life is soft - evento anual de software empresarial
 
Vista:

Como le hago

Publicado por Alejandro Lopez (2 intervenciones) el 17/07/2007 00:29:57
Hola buenas tardes, desde estas lejanas tierras del mayab, donde esta una de las siete nuevas maravillas del mundo moderno, me atrevo a preguntarles lo siguiente, voy a tratar de ser lo mas explicito posible, agradeciento de antemano su ayuda, gracias.

Estoy trabajando en una macro de excel, que al capturar algunos datos, al presionarle guardar captura, automaticamente me lo pasa a otra hoja de excel, el problema esta que cuando le introduzco otros datos, no me los agrega al final de lo que anteriormente habia capturado, si no que lo sobreescribe, lo que necesito es que me permita agregarlos al principio o al final de mi lista, esta lista tiene aproximadamente 234 renglones.

les acompaño las instrucciones en vba que le diseñe:

Sub Grabarcaptura()
'
' Grabarcaptura Macro
' Macro grabada el 09/07/2007 por Alejandro López Pérez
'

'
'Sheets = datos.Cells(2, 1).Select
' Selection.EntireRow.Insert
' Rows("2:234").Select
'Sheets("Datos").Select
'Range("A2").Select
'Selection.EntireRow.Insert
'Rows("234:234").Select
'Range("A2").Select
Range("A17:A55").Select
Selection.Copy
Sheets("Datos").Select
ActiveSheet.Paste
' ActiveWindow.SmallScroll Down:=33
Range("A41").Select
Sheets("Hoja1 (2)").Select
' ActiveWindow.SmallScroll Down:=-12
Range("B17:B55").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datos").Select
ActiveSheet.Paste
'ActiveWindow.SmallScroll Down:=30
Range("A80").Select
Sheets("Hoja1 (2)").Select
'ActiveWindow.SmallScroll Down:=-18
Range("C17:C55").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datos").Select
ActiveSheet.Paste
'ActiveWindow.SmallScroll Down:=30
Range("A119").Select
Sheets("Hoja1 (2)").Select
ActiveWindow.SmallScroll Down:=-12
Range("D17:D55").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=-18
Sheets("Datos").Select
'ActiveWindow.SmallScroll Down:=3
ActiveSheet.Paste
'ActiveWindow.SmallScroll Down:=39
Range("A158").Select
Sheets("Hoja1 (2)").Select
'ActiveWindow.SmallScroll Down:=-33
Range("E17:E55").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datos").Select
ActiveSheet.Paste
'ActiveWindow.SmallScroll Down:=42
Range("A197").Select
Sheets("Hoja1 (2)").Select
'ActiveWindow.SmallScroll Down:=-15
Range("F17:F55").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datos").Select
'ActiveWindow.SmallScroll Down:=12
ActiveSheet.Paste
'ActiveWindow.SmallScroll Down:=-195
Range("B2").Select
Sheets("Hoja1 (2)").Select
'ActiveWindow.SmallScroll Down:=-18
Range("A13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datos").Select
Range("B2:B235").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C2").Select
Sheets("Hoja1 (2)").Select
Range("B10:C10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datos").Select
Range("C2:C235").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
'Range("E2:E263").Select
'ActiveWindow.SmallScroll Down:=-12
'ActiveWindow.ScrollRow = 231
'ActiveWindow.ScrollRow = 225
'ActiveWindow.ScrollRow = 213
'ActiveWindow.ScrollRow = 202
'ActiveWindow.ScrollRow = 191
'ActiveWindow.ScrollRow = 178
'ActiveWindow.ScrollRow = 166
'ActiveWindow.ScrollRow = 150
'ActiveWindow.ScrollRow = 136
'ActiveWindow.ScrollRow = 123
'ActiveWindow.ScrollRow = 108
'ActiveWindow.ScrollRow = 94
'ActiveWindow.ScrollRow = 81
'ActiveWindow.ScrollRow = 68
'ActiveWindow.ScrollRow = 59
'ActiveWindow.ScrollRow = 51
'ActiveWindow.ScrollRow = 43
'ActiveWindow.ScrollRow = 34
'ActiveWindow.ScrollRow = 27
'ActiveWindow.ScrollRow = 22
'ActiveWindow.ScrollRow = 19
'ActiveWindow.ScrollRow = 14
'ActiveWindow.ScrollRow = 12
'ActiveWindow.ScrollRow = 9
'ActiveWindow.ScrollRow = 6
'ActiveWindow.ScrollRow = 4
'ActiveWindow.ScrollRow = 2
'ActiveWindow.ScrollRow = 1
'Range("E2").Select
Sheets("Hoja1 (2)").Select
Range("B8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datos").Select
Range("E2:E235").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Hoja1 (2)").Select
Range("A15").Select
Application.CutCopyMode = False
Sheets("Datos").Select
Range("A2").Select
'Selection.EntireRow.Insert
'Rows("2:234").Select
'Range("A2").Select
End Sub

Por favor si me pueden ayudar se los agradeceria mucho. Dios los bendiga.
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

RE:Como le hago

Publicado por Martin (3 intervenciones) el 18/07/2007 00:51:34
Hola,lo que necesitas hacer antes que guardes la informacion es buscar cual es el primer renglon disponible,es decir hacer un ciclo que haga un barrido de la hoja de excel y vaya validando renglon por renglon para encontrar el primer renglon vacio para que apartir de ahi empieze a pegar :

//DAMOS DE ALTA UN CONTADOR QUE ES "L"
dim l as integer

//INICIALIZAMOS EL CONTADOR EN UNO
L=1

//SELECCIONAMOS LA HOJA EN LA QUE PEGAREMOS LA INFORMACION,SUPONIENDO QUE SE LLAME "Hoja"
sheets("Hoja1").select

//INICIAMOS EL CICLO O BARRIDO DE LA HOJA EN BUSCA DE UN RENGLON QUE NO ESTE VACIO ES DECIR DIFERENTE DE ""
DO WHILE CELLS(L,1).select <>""

//AL ENCONTRARLO INCREMENTAMOS EL CONTADOR PARA BUSCAR AHORA EN EL SIGUIENTE RENGLON
L=L+1

//REPETIMOS EL CICLO
LOOP

//CUANDO SE ENCUENTRA UN RENGLON VACIO SE ROMPE EL CICLO Y L SE QUEDA CON EL VALOR DEL ULTIMO RENGLON NO VACIO POR LO QUE LE AGREGAMOS UNO PARA QUE SE SELECCIONE EL RENGLON VACIO
L=L+1

//OPCIONAL PUEDES DESPLEGAR EL VALOR DE L PARA VERIFICAR QUE EFECTIVAMENTE SE TRATE DEL PRIMER RENGLON VACIO
MSGBOX ""EL PRIMER RENGLON VACIO ES EL No."& L

tienes el renglon apartir del cual debes de empezar a pegar ahora es cuestion de que a la hora de seleccionar el rango donde vas a pegar lo hagas basandote en el valor de L,sino puedes o tienes alguna duda al respecto escribeme y te mandare algo al respecto.

Saludos.....
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

RE:Como le hago

Publicado por Joint (20 intervenciones) el 21/07/2007 22:54:37
Observa lo que hace este código

Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
...

Con esto, primero se instala en la celda A1, luego baja hasta la ultima celda llena y posteriormente baja una celda mas, es decir, la primera celda vacía, donde podrás ecribir lo que necesites.

Espero haber ayudado.
Saludos.
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
sin imagen de perfil

RE:Como le hago

Publicado por Raul (1 intervención) el 20/11/2007 22:31:14
Yo tengo un problema es el siguiente:

hice un formulario donde la informacion se pega al mismo tiempo en diferentes hojas y rangos, el detalle está en que al momento de dar click en el boton siguiente que hice, solo baja una hoja, y es la que está activa, deseo que baje un renglon pero todo el libro.
ya que borra los datos que recién ingresé y los sustituye por otros.

Este es mi boton para que inserte la fila y continue trabajando el problema es que solo la hoja que esté viendo con el formulario se recorre un renglon mas abajo.

Public Sub CommandButton1_Click()

Selection.EntireRow.Insert (QUIERO QUE APLIQUE A TODO EL  LIBRO, NO SOLO A UNA HOJA)
TextBox1.SetFocus
End Sub

Espero y puedan ayudarme Gracias
Saludos!!!
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