Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Ofimática (http://www.forosdelweb.com/f90/)
-   -   Macros & VBA (http://www.forosdelweb.com/f90/macros-vba-609273/)

baskjzz 25/07/2008 10:18

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

mrocf 25/07/2008 12:11

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. :si:

baskjzz 27/07/2008 18:20

Respuesta: Macros & VBA
 
Cita:

Iniciado por mrocf (Mensaje 2506826)
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. :si:


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

mrocf 27/07/2008 20:22

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.

baskjzz 28/07/2008 05:25

Respuesta: Macros & VBA
 
Cita:

Iniciado por mrocf (Mensaje 2509035)
¿ 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:si: hahâ ^^


Saludos.

mrocf 28/07/2008 07:38

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...
:aplauso:

baskjzz 28/07/2008 07:49

Respuesta: Macros & VBA
 
Cita:

Iniciado por mrocf (Mensaje 2509468)
¡ 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...
:aplauso:



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

baskjzz 28/07/2008 08:20

Respuesta: Macros & VBA
 
Cita:

Iniciado por mrocf (Mensaje 2509468)
¡ 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...
:aplauso:


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

baskjzz 28/07/2008 11:26

Respuesta: Macros & VBA
 
Cita:

Iniciado por baskjzz (Mensaje 2509511)
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.:-)

mrocf 28/07/2008 11:52

Respuesta: Macros & VBA
 
Ja ja ja... !!! :aplauso:

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

Te mando un gran saludo.
Cacho.


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

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.