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

Macros & VBA

Estas en el tema de Macros & VBA en el foro de Ofimática en Foros del Web. Compañeros, Tengo una cuestion con una macro de excel , les paso a explicar: Necesito hacer un AutoFill automatico con variables. osea , tengo dos ...
  #1 (permalink)  
Antiguo 25/07/2008, 10:18
 
Fecha de Ingreso: julio-2008
Mensajes: 17
Antigüedad: 15 años, 9 meses
Puntos: 0
Macros & VBA

Compañeros,

Tengo una cuestion con una macro de excel , les paso a explicar:

Necesito hacer un AutoFill automatico con variables. osea , tengo dos columnas, la primera con datos ( por ej de A1 a A10) y la otra con solo un dato en B1, kisiera hacer un AutoFill repitiendo el valor de B1 hasta B10, sin hacer Selection.AutoFill Destination:=Range("B1:B10") sino, poner dos variables, enves de poner B1 poner una variable que contenga el numero de celda q esta seleccionado. y otra variable de fin que me calcule cuantas celdas hay en la primera columna, ( en este caso 10 celdas, de A1 a A10).

Si me ayudarian en esto estaria eternamente agradecido.

Desde ya muchas gracias.

Basjzz

Última edición por baskjzz; 25/07/2008 a las 10:34
  #2 (permalink)  
Antiguo 25/07/2008, 12:11
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo Respuesta: Macros & VBA

Intenta con
Código:
ActiveCell.Copy Range(ActiveCell, [A65536].End(xlUp).Offset(0, 1))
Como puedes ver, en este ejemplo ni tan siquiera se requiere utilizar variables: sólo la celda activa.

Saludos.
  #3 (permalink)  
Antiguo 27/07/2008, 18:20
 
Fecha de Ingreso: julio-2008
Mensajes: 17
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Macros & VBA

Cita:
Iniciado por mrocf Ver Mensaje
Intenta con
Código:
ActiveCell.Copy Range(ActiveCell, [A65536].End(xlUp).Offset(0, 1))
Como puedes ver, en este ejemplo ni tan siquiera se requiere utilizar variables: sólo la celda activa.

Saludos.

ese codigo lo k me hace es copiarme lo de la columna de arladoo, y no kiero eso, osea el valor k tngo en b1 es diferente del k tengo en A1:A10 , y lo k hace ese codigo como te decia es copiarme la columna A1:A10 y me sobreescribe el dato k tenia en B1 :S

lo k kiero es k el dato B1 se copie hacia abajo teniendo como referencia las celdas A1:A10 .

Igualmente estoy muy agradecido x tu pronta respuesta.

si tienes otra idea k me puedas ayudar, me alegrarias el dia jaja .


Gracias nuevamente

Saludos

Baskjzz
  #4 (permalink)  
Antiguo 27/07/2008, 20:22
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
Respuesta: Macros & VBA

¿ Sabes a quien refiere el "ActiveCell" de
Range(ActiveCell, [A65536].End(xlUp).Offset(0, 1)) ... ?

Pues a B1.

De modo que si dices lo que dices, es que has ejecutado la línea de código que te mencioné seleccionando otra celda que no B1.

Prueba hacerlo bien... y me cuentas, ¿ok?.

Saludos.
  #5 (permalink)  
Antiguo 28/07/2008, 05:25
 
Fecha de Ingreso: julio-2008
Mensajes: 17
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Macros & VBA

Cita:
Iniciado por mrocf Ver Mensaje
¿ Sabes a quien refiere el "ActiveCell" de
Range(ActiveCell, [A65536].End(xlUp).Offset(0, 1)) ... ?

Pues a B1.

De modo que si dices lo que dices, es que has ejecutado la línea de código que te mencioné seleccionando otra celda que no B1.

Prueba hacerlo bien... y me cuentas, ¿ok?.

Saludos.

Tenias razon, es que habia puesto el ejemplo de A1:A10 y de B1, solo para poder explicarlo, pro exactamente no eran esas columnas. Eran D1:D10 y E1, pero ya modifique el codigo para k se ajustara.


Igualmente ocurre un problema. lo que hace el codigo que me proporcionastes, es copiar todo, osea mi hoja de calculo tiene datos de D1:D10, un espacio y despues D12:D22 , me entendes? y el codigo me copia el dato E1 por todas las columnas de desde D1:D22 y el dato k hay en E1 y en E12 son diferentes.


lo que necesito es k el dato E1 se copie con referencia a D1:D10 y el dato E12 se copie en referencia a E12:E22 . y otra cosa no necesaria mente es de 10 en 10 a veses puede variar.


Gracias nuevamente x tu rapida respuesta.

Has sido muy amable. si tienes otra idea, estoy ansioso x escucharla hahâ ^^


Saludos.
  #6 (permalink)  
Antiguo 28/07/2008, 07:38
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo Respuesta: Macros & VBA

¡ No te imaginas lo sencillo que sería todo... si explicaras las cosas completa y correctamente desde un principio. !!!

En fin: prueba con este código:

Código:
Application.ScreenUpdating = False
Do
  ActiveCell.Copy
  If ActiveCell.Offset(1, -1) <> "" Then
    ActiveSheet.Paste _
      Range(ActiveCell, ActiveCell.Offset(0, -1).End(xlDown).Offset(0, 1))
    ActiveCell.End(xlDown).Select
  End If
  ActiveCell.End(xlDown).Select
Loop Until ActiveCell.Row > 65000
Cells(1, ActiveCell.Column).Select
Application.ScreenUpdating = True
Recuerda que previo a ejecutar la macro tienes que seleccionar la primer celda de la segunda columna... como en cualquier "autofill", según tus especificaciones.

Te mando un saludo y espero que te sea útil...
  #7 (permalink)  
Antiguo 28/07/2008, 07:49
 
Fecha de Ingreso: julio-2008
Mensajes: 17
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Macros & VBA

Cita:
Iniciado por mrocf Ver Mensaje
¡ No te imaginas lo sencillo que sería todo... si explicaras las cosas completa y correctamente desde un principio. !!!

En fin: prueba con este código:

Código:
Application.ScreenUpdating = False
Do
  ActiveCell.Copy
  If ActiveCell.Offset(1, -1) <> "" Then
    ActiveSheet.Paste _
      Range(ActiveCell, ActiveCell.Offset(0, -1).End(xlDown).Offset(0, 1))
    ActiveCell.End(xlDown).Select
  End If
  ActiveCell.End(xlDown).Select
Loop Until ActiveCell.Row > 65000
Cells(1, ActiveCell.Column).Select
Application.ScreenUpdating = True
Recuerda que previo a ejecutar la macro tienes que seleccionar la primer celda de la segunda columna... como en cualquier "autofill", según tus especificaciones.

Te mando un saludo y espero que te sea útil...


SOS UN GROSO


Gracias che!

y mil disculpas x mal expresarme, es que aveses trato de hacer mas chica mi pregunta, para que no sea tan aburrida de leerla, y al final termino mal expresandome. :S..

en fin, tu codigo anda de marabilla, se te ocurrio asi tan rapido? faah

ahora tendria que hacer lo mismo con cada dato correspondiente de E"x" , con referencia a los datos de la columna D"x". pero eso lo tendre que investigar yo, ya me distes una mano tremenda.

Muchisimas gracias!.

Saludos
  #8 (permalink)  
Antiguo 28/07/2008, 08:20
 
Fecha de Ingreso: julio-2008
Mensajes: 17
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta Respuesta: Macros & VBA

Cita:
Iniciado por mrocf Ver Mensaje
¡ No te imaginas lo sencillo que sería todo... si explicaras las cosas completa y correctamente desde un principio. !!!

En fin: prueba con este código:

Código:
Application.ScreenUpdating = False
Do
  ActiveCell.Copy
  If ActiveCell.Offset(1, -1) <> "" Then
    ActiveSheet.Paste _
      Range(ActiveCell, ActiveCell.Offset(0, -1).End(xlDown).Offset(0, 1))
    ActiveCell.End(xlDown).Select
  End If
  ActiveCell.End(xlDown).Select
Loop Until ActiveCell.Row > 65000
Cells(1, ActiveCell.Column).Select
Application.ScreenUpdating = True
Recuerda que previo a ejecutar la macro tienes que seleccionar la primer celda de la segunda columna... como en cualquier "autofill", según tus especificaciones.

Te mando un saludo y espero que te sea útil...

Disculpame que te moleste nuevamente ,

es que el codigo k me pasastes funciono correctamente, pero me queda seleccionando la celda E1 , y necesitaria que seleccionaze la celda que fue copiada hacia abajo. osea si el dato E22 fue el k hicimos autofall hacia abajo, que por ultimo del if me quede seleccionada la celda E22, me entendes?


disculpame si te molesto , no es mi intencion.


Gracias
  #9 (permalink)  
Antiguo 28/07/2008, 11:26
 
Fecha de Ingreso: julio-2008
Mensajes: 17
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Macros & VBA

Cita:
Iniciado por baskjzz Ver Mensaje
Disculpame que te moleste nuevamente ,

es que el codigo k me pasastes funciono correctamente, pero me queda seleccionando la celda E1 , y necesitaria que seleccionaze la celda que fue copiada hacia abajo. osea si el dato E22 fue el k hicimos autofall hacia abajo, que por ultimo del if me quede seleccionada la celda E22, me entendes?


disculpame si te molesto , no es mi intencion.


Gracias
Ya solucione yo mismo el problema. Muchas Gracias x todo me ayudastes enormemente :)


saludos.
  #10 (permalink)  
Antiguo 28/07/2008, 11:52
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
Respuesta: Macros & VBA

Ja ja ja... !!!

Ha quedado demostrado que tienes un buen diálogo "contigo mismo", puesto que te preguntaste y te respondiste a tí mismo.

Te mando un gran saludo.
Cacho.
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 21:33.