Excel graba una cosa y ejecuta otra

24/11/2006 - 11:49 por kusflo | Informe spam
Tengo una hoja de Excel con el rango de B1:O2 combinado. Mediante la opción
de grabar macros he querido ocultar las columnas C:E y sin problemas lo he
conseguido. EL problema es cuando copio el código generado automáticamente y
lo pongo en una macro. Al ejecutarla observo como excel no obedece a la macro
y selecciona y oculta las columnas de B a O en vez de C a E. Esto me imagino
que lo hace porque tengo las celdas combinadas. ¿Cómo puedo conseguir que
excel obedezca correctamente a la macro grabada?. Les dejo abajo el código
generado por Excel.

'Código generado por Excel

Columns("C:E").Select
Range("C3").Activate
Selection.EntireColumn.Hidden = True
Range("A5").Select


"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe; he
aquí el verdadero saber." Confucio.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
24/11/2006 - 23:16 | Informe spam
hola, marcos !

... con el rango de B1:O2 combinado... grabar macros he querido ocultar las columnas C:E y sin problemas
... cuando copio el codigo generado automaticamente y lo pongo en una macro... excel no obedece a la macro
... selecciona y oculta las columnas de B a O en vez de C a E... me imagino que lo hace porque tengo las celdas combinadas.
Como puedo conseguir que excel obedezca correctamente a la macro grabada?...

Columns("C:E").Select
Range("C3").Activate
Selection.EntireColumn.Hidden = True
Range("A5").Select



1) por lo que se puede ver... excel SI esta obedeciendo 'cabalmente' las instrucciones de la macro auto-grabada :))
2) el 'detalle' esta en que la macro la grabaste mientras NO estaban combinadas las celdas ;)
3) estando celdas combinadas... NO puedes 'seleccionar' una celda 'de enmedio'... SIN seleccionar la combinacion total <= OJO
4) solucion ? -> EVITA instrucciones del tipo 'Select' y [de todas formas] puedes trabajar con las celdas 'intermedias' [p.e.]
Columns("c:e").EntireColumn.Hidden = True ' o False

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 kusflo
27/11/2006 - 09:50 | Informe spam
Aunque tu solución me sirve perfectamente quería aclarar que Excel no obedece
tan "cavalmente" la macro grabada. En el primer post no pongo que haya
seleccionado las celdas de en medio ya que lo que he seleccionado en la
macro-autograbada son las columnas de en medio, es decir, selecciono las
columnas (C:E) y las oculto.
Si posteriormente ejecutas esa macro observaras que la macro no ejecuta lo
mismo que tu has hecho. Oculta las columnas (B:O). Prueba y verás!.
De todos modos tienes razón con lo de evitar el "Select" ya que me ha dado
problemas anteriormente en otras macros. Gracias por la ayuda!.

"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe; he
aquí el verdadero saber." Confucio.


"Héctor Miguel" escribió:

hola, marcos !

> ... con el rango de B1:O2 combinado... grabar macros he querido ocultar las columnas C:E y sin problemas
> ... cuando copio el codigo generado automaticamente y lo pongo en una macro... excel no obedece a la macro
> ... selecciona y oculta las columnas de B a O en vez de C a E... me imagino que lo hace porque tengo las celdas combinadas.
> Como puedo conseguir que excel obedezca correctamente a la macro grabada?...
>
> Columns("C:E").Select
> Range("C3").Activate
> Selection.EntireColumn.Hidden = True
> Range("A5").Select

1) por lo que se puede ver... excel SI esta obedeciendo 'cabalmente' las instrucciones de la macro auto-grabada :))
2) el 'detalle' esta en que la macro la grabaste mientras NO estaban combinadas las celdas ;)
3) estando celdas combinadas... NO puedes 'seleccionar' una celda 'de enmedio'... SIN seleccionar la combinacion total <= OJO
4) solucion ? -> EVITA instrucciones del tipo 'Select' y [de todas formas] puedes trabajar con las celdas 'intermedias' [p.e.]
Columns("c:e").EntireColumn.Hidden = True ' o False

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#3 Tux
27/11/2006 - 19:14 | Informe spam
kusflo escribió:
Aunque tu solución me sirve perfectamente quería aclarar que Excel no obedece
tan "cavalmente" la macro grabada. En el primer post no pongo que haya
seleccionado las celdas de en medio ya que lo que he seleccionado en la
macro-autograbada son las columnas de en medio, es decir, selecciono las
columnas (C:E) y las oculto.
Si posteriormente ejecutas esa macro observaras que la macro no ejecuta lo
mismo que tu has hecho. Oculta las columnas (B:O). Prueba y verás!.
De todos modos tienes razón con lo de evitar el "Select" ya que me ha dado
problemas anteriormente en otras macros. Gracias por la ayuda!.




Hola Kusflo :-)

Siento meterme en el hilo :-P jeejejej!:-)

Bien estoy aprendiendo codigo ;-) pues veras segun tu macro autograbada
ha grabado lo siguiente:

Columns("C:E").Select
Range("C3").Activate
Selection.EntireColumn.Hidden = True
Range("A5").Select


Bien esta linea de codigo dice que <<Range("C3").Activate>>:

que tu grabadora ha activado la celda C3, dandole al Enter despues de
seleccionar las Columnas C y E ¿que quiere decir? pues que se ha
seleccionado una celda de enmedio en este caso sucede siendo combinada o
no combinada ya que el codigo dice eso por lo tanto obedece a lo que
nosotros le hemos dicho, si en esas columnas no tuvieras ninguna celda
combinada el codigo se ejecutaria correctamente :-) Pero que pasaria
si combinaramos las celdas b4 y C4 , y ejecutaramos la macro pues
logicamente el codigo fallaria Por el tema del select, a la hora de
grabarlo nos lo grabaria como lo expuesto arriba pero a la hora de
ejcutarlo fallaria pero en cambio si no hubiese ninguna celda combinada
el codigo iria de categoria amos sin fallos :-P No se si me he explicado
muy bien peroooooo mas o menos eso ...



Saludos
Monica
¡Un SAludo! :-)

www.fermu.com
www.zorval.es
Respuesta Responder a este mensaje
#4 Héctor Miguel
28/11/2006 - 06:18 | Informe spam
hola, marcos !

Aunque tu solucion me sirve perfectamente queria aclarar que Excel no obedece tan "cavalmente" la macro grabada.
En el primer post no pongo que haya seleccionado las celdas de en medio
ya que lo que he seleccionado en la macro-autograbada son las columnas de en medio
es decir, selecciono las columnas (C:E) y las oculto.
Si posteriormente ejecutas esa macro observaras que la macro no ejecuta lo mismo que tu has hecho.
Oculta las columnas (B:O). Prueba y veras!.
De todos modos tienes razon con lo de evitar el "Select" ya que me ha dado problemas anteriormente en otras macros...



-> haz una sencilla prueba de 'como' es que se hace una seleccion de columnas cuando existen celdas combinadas [p.e.]

1) en una hoja 'limpia' [o sea, SIN celdas combinadas]
a) selecciona el rango 'C3:E3'
b) pulsa las teclas {ctrl}+{espacio}

2) ahora... repite los pasos anteriores PERO... en una hoja donde tengas combinadas las celdas del rango [p.e.] 'B1:O2'

comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#5 kusflo
28/11/2006 - 09:26 | Informe spam
Prueba realizada!. Ya lo tengo claro. Gracias a los dos!.
"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe; he
aquí el verdadero saber." Confucio.


"Héctor Miguel" escribió:

hola, marcos !

> Aunque tu solucion me sirve perfectamente queria aclarar que Excel no obedece tan "cavalmente" la macro grabada.
> En el primer post no pongo que haya seleccionado las celdas de en medio
> ya que lo que he seleccionado en la macro-autograbada son las columnas de en medio
> es decir, selecciono las columnas (C:E) y las oculto.
> Si posteriormente ejecutas esa macro observaras que la macro no ejecuta lo mismo que tu has hecho.
> Oculta las columnas (B:O). Prueba y veras!.
> De todos modos tienes razon con lo de evitar el "Select" ya que me ha dado problemas anteriormente en otras macros...

-> haz una sencilla prueba de 'como' es que se hace una seleccion de columnas cuando existen celdas combinadas [p.e.]

1) en una hoja 'limpia' [o sea, SIN celdas combinadas]
a) selecciona el rango 'C3:E3'
b) pulsa las teclas {ctrl}+{espacio}

2) ahora... repite los pasos anteriores PERO... en una hoja donde tengas combinadas las celdas del rango [p.e.] 'B1:O2'

comentas ?
saludos,
hector.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida