Problemas con .Pagesetup.PrintArea

rguez

Board Regular
Joined
Jul 24, 2002
Messages
78
Hola a todos

Tengo un problema bastante curioso.

Una de las macro de mi programa se dedica a definir áreas de impresión.
El siguiente es el código (adjunto definición de variable)

(CODIGO AL COMIENZO DE UN MODULO CUALQUIERA)
Type tipoentorno
General As Worksheet
End Type
Public entorno As tipoentorno

(CODIGO EN UNA SUB)
Set entorno.General = ActiveWorkbook.Sheets("1_Generales")

(DEFINICION DE AREA)
entorno.General.PageSetup.PrintArea = "$A$1:$M$47"

Todo funciona bastante bien, el comando efectivamente define el àrea de impresiòn.
El problema que si pincho en "seleccionar objeto" de la barra de dibujo (que es un icono de flecha) y se activa la macro, me arroja un error diciendo que la propiedad .PageSetup no existe para el objeto. :unsure:

¿Qué sucede?
Una soluciòn es hacer imposible al usuario que cambie el cursor a esta modalidad ¿es posible?,¿còmo?

Por lo demàs, ¿estoy definiendo bien la variable pública? de manera que tenga scope en todos los módulos???

Se que son muchas preguntas, pero espero vuestro entendimiento
AYUDA! :rolleyes:
 

Excel Facts

Save Often
If you start asking yourself if now is a good time to save your Excel workbook, the answer is Yes
Extraño ! pero si, el error ocurre en 2000 y en XP... pero creo que encontré la solución.

En cuanto a la variable, me parece que se está complicando un poco las cosas al crear un UDT (User Defined Type), porque simplemente se puede definir una variable así:

Dim WS as Worksheet

y listo...

Bueno, la solución es "buscar" el control, el ID es 182, que lo encontré con esto:

?Application.CommandBars("Drawing").Controls(2).Id

y mirar el estado, si está "presionado", ejecutarlo para que se "desactive". El código sería así:

<font face=Courier New><SPAN style="color:#00007F">Option</SPAN> <SPAN style="color:#00007F">Explicit</SPAN>

<SPAN style="color:#00007F">Public</SPAN> WS <SPAN style="color:#00007F">As</SPAN> Worksheet

<SPAN style="color:#00007F">Sub</SPAN> Test()
    <SPAN style="color:#00007F">Dim</SPAN> Ctrl <SPAN style="color:#00007F">As</SPAN> CommandBarButton
    <SPAN style="color:#00007F">Set</SPAN> Ctrl = Application.CommandBars.FindControl(ID:=182)
    <SPAN style="color:#00007F">If</SPAN> Ctrl.State = msoButtonDown <SPAN style="color:#00007F">Then</SPAN>
        Ctrl.Execute
    <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN>
    <SPAN style="color:#00007F">Set</SPAN> WS = ActiveWorkbook.Sheets("Hoja1")
    WS.PageSetup.PrintArea = "A1:A10"
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>

</FONT>
 
Upvote 0
Gracias Juan Pablo

Funciona perfectamente, opté por lo sano = no permitir utilizar el comando.

Quién sabes qué más puede fallar... ya sabes... si falla una cosa.. pueden fallar todas. ( :devilish: = Microsoft )

A propósito de la declaración de la variable, la verdad la variable "entorno" es un tipo más cumplejo de lo que te mostré, y contiene todo el "state" del libro, la variable la paso como argumento en algunas operaciones mayores (entre libros, etc)

En fin, problema resulto :LOL: ¡ GRACIAS !

PS: recuerdas como definir las HOT-KEY (CTRL+**)... una vez lo ví pero se me perdió el archivo..

Saludos
 
Upvote 0
Ah... me imaginé que era eso con la variable entorno, pero como no lo vi, por eso lo dije ! :biggrin:

Y lo otro, pues depende... una opción es utilizar Application.OnKey, y la otra es Application.MacroOptions.

Saludos !
 
Upvote 0

Forum statistics

Threads
1,215,678
Messages
6,126,176
Members
449,296
Latest member
tinneytwin

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top