Que es thisworbook ?

16/05/2007 - 14:51 por AgerGaston | Informe spam
Hola a todos.
Me podrian decir que es y cual es el uso del "THISWORBOOK" ??

Y cual es la diferencia con Hoja1(Hoja1), Hoja2 (Hoja2), etc.

Y en que casos se usa uno u otro.

Gracias y saludos

Preguntas similare

Leer las respuestas

#1 Ivan
16/05/2007 - 17:40 | Informe spam
On 16 mayo, 14:51, AgerGaston
wrote:
Hola a todos.
Me podrian decir que es y cual es el uso del "THISWORBOOK" ??

Y cual es la diferencia con Hoja1(Hoja1), Hoja2 (Hoja2), etc.

Y en que casos se usa uno u otro.

Gracias y saludos



hola Ager,

aunque basicamente se trata de el modulo de clase correspondiente al
libro contenedor del proyecto (ThisWorkbook) y al correspondiente a
cada hoja de ese libro (Hoja1(..), Hoja2(..), etc), te comento como lo
describiria yo, en plan medio profano:

si te fijas en esa ventana (Explorador de proyectos) veras que estan
listados, en forma de arbol, todos los proyectos activos/abiertos en
ese momento ( a lo mejor hay mas proyectos de los que tu crees tener
abiertos. Esto se debe a que puede que tengas cargado algun
complemento que se carga automaticamente al abrir excel y/o
posiblemente a que si has (o se ha) creado el libro de macros
Personal.xls, este tambien se carga automaticamente (y por lo general)
al abrir excel, aunque permanece oculto)

normalmente, excepto los que se les haya cambiado el nombre, cada
proyecto aparece mas o menos asi:

VBAProject(NombreDelLibro)

en el caso de Excel, cada proyecto contiene (creo que) como minimo dos
modulos de clase :

el modulo correspondiente al libro del proyecto <ThisWorkbook> y un
modulo de hoja <Hoja1(NombreDeLaHoja)>, o un modulo por cada hoja que
contenga el libro

los cuales se usan sobre todo para escribir los procedimientos de
control de eventos de cada uno de ellos.

pej: para el libro podrias querer que en el momento de abrirse se
ejecutara alguna accion automaticamente. Para ello podrias usar el
evento Open del objeto Workbook y deberias escribirlo en el modulo
ThisWorkbook.

O en el caso de los eventos de hoja, si quisieras que se ejecutara
alguna accion pej. al cambiar el contenido de una celda, podrias usar
el evento Change de las hojas de calculo, y deberias escribirlo en el
modulo de la correspondiente hoja

si quieres verlo mas claro, haz doble click sobre alguno de los
nombres (Thisworkbook, Hoja1(), etc) para que se te abra el modulo
correspondiente. Seguramente aparecera un modulo en blanco, si no has
introducido codigo previamente (o puede que contenga 'Option
Explicit'). En el cuadro combinado que veras arriba de la hoja y que
seguramente ponga 'General', selecciona el otro item, que en el caso
de thisworkbook sera (+o-) WorkBook y en de las hojas Whorksheets

automaticamente se te habra colocado en el modulo el encabeazado y fin
de el procedimiento de evento predeterminado del objeto
correspondiente, que en el caso del libro, y si no me equivoco, seria
el evento 'Open' y en de las hojas 'SelectionChange'.

NOTA: por si no lo supieras, cuando hablo de objetos, te comento que
para VBa un libro es un objeto, una hoja es un objeto, un formulario
es un objeto, un listbox es un objeto, incluso un caracter o una
fuente pueden ser un o9bjeto, aunque para no liarte quedemons con
libros, hojas, y formularios los cuales, al crearlos ya traen consigo
su propi modulo de clase (ThisWorkbok, Hja1(Hoja1), y el caso de los
formularios el modulo de codigo de UserForm+NºQue sea, (y no pierdas
de vista los controles, que, aunque no lleven asociados un modulo de
clase, si tienen sus propios eventos, que se manejan en el de su
correspndiente contenedor)

si quieres utilizar otro evento o simplemente ver los correspondientes
a cada objeto, ve al cuadro combinado de la izquierda y al deplegarlo
veras los eventos que puedes controlar de ese objeto.

bueno creo que ya me/te he liado demasiado. Solo un par de apuntes
creo que bastante importantes:

1ª.-estos moduls se suelen usar casi exclusivamente para los cdigos
manejadres de los eventos, y como mucho para algun procedimiento/
funcin directa y exclusivamente utilizado en dichos eventos

2ª.- para el resto de procedimientos/funciones/macros (creo que) es
conveniente utilizar modulos normales. Si vas al menu insertar y
eliges 'Modulo' a secas [ OJO: no 'Modulo de clase', que son otro
mundo, al menos para mi de momento] insertaras un nuevo modulo en el
que se suelen/deben escribir la mayoria de los codigos/ayudas que
veras/obtendras en estos foros ( excepto, esta claro, los que manejen
eventos de algun objeto, o los que asi te indiquen explicitamente)

bueno, disculpas el rollo y espero se me haya entendido algo

un saludo
Ivan

PD: aparte de mi pesima constumbre de saltarme la acentuacion, puede
que me falten un purrela de 'oes', pues el dichoso teclado creo que
esta a punto de expirar y ha decidido por su cuenta que esta no es
necesaria y la mayoria de las veces se la come
Respuesta Responder a este mensaje
#2 Ivan
17/05/2007 - 16:31 | Informe spam
hola de nuevo Ager,

aunque no se si seguiras por ahi, se me ha pasado comentarte el uso
mas habitual del 'termino' ThisWorkbook , que es el de asegurarte de
que haces referencia al libro que CONTIENE el codigo, que puede no ser
el activo en el momento de ejecutarse el mismo.

ten en cuenta, que si en un codigo no especificas explicitamente el
archivo sobre el que debe trabajar determinado codigo, normalmente
este se ejecuta sobre el que este activo en ese momento, que puede no
ser el que tu crees/deseas en ese momento (por lo menos a mi me ocurre
en bastantes ocasiones, sobre todo si tienes varios libros abiertos a
la vez). Por si ayudan fijate en estos 3 ejemplos:

ej.1.- Workbooks("TuLibro").Worksheets("Hoja1").Columns.Autofit

ej.2.- ThisWorkbook.Worksheets("Hoja1").Columns.Autofit

ej.3.- Worksheets("Hoja1").Columns.Autofit

en el 1º estarias ajustando las columnas de la Hoja1 de un libro
llamado "TuLibro", que puede ser el que contiene el codigo, o puede no
serlo. Asimismo, puede ser el activo, o no serlo.

en el 2º el codigo se ejecutara siempre sobre la Hoja1 del libro que
contiene el codigo, da igual el nombre o si es el activo o no.

sin embargo, y si no me equivoco, el 3º se ejecutara siempre sobre la
hoja1 del libro activo en el momento de ejecutarse el codigo, lo cual,
te puedo asegurar, puede ser sumamente arriesgado si no lo tienes muy
claro, y te aseguras de que el activo es el adecuado.

un saludo
Ivan
Respuesta Responder a este mensaje
#3 AgerGaston
17/05/2007 - 19:51 | Informe spam
Hola Ivan.
Gracias por tus explicaciones voy a tomarme un tiempito para
leerlas/comprenderlas, cualquier cosa te aviso.

Gracias y saludos

"Ivan" escribió:

hola de nuevo Ager,

aunque no se si seguiras por ahi, se me ha pasado comentarte el uso
mas habitual del 'termino' ThisWorkbook , que es el de asegurarte de
que haces referencia al libro que CONTIENE el codigo, que puede no ser
el activo en el momento de ejecutarse el mismo.

ten en cuenta, que si en un codigo no especificas explicitamente el
archivo sobre el que debe trabajar determinado codigo, normalmente
este se ejecuta sobre el que este activo en ese momento, que puede no
ser el que tu crees/deseas en ese momento (por lo menos a mi me ocurre
en bastantes ocasiones, sobre todo si tienes varios libros abiertos a
la vez). Por si ayudan fijate en estos 3 ejemplos:

ej.1.- Workbooks("TuLibro").Worksheets("Hoja1").Columns.Autofit

ej.2.- ThisWorkbook.Worksheets("Hoja1").Columns.Autofit

ej.3.- Worksheets("Hoja1").Columns.Autofit

en el 1º estarias ajustando las columnas de la Hoja1 de un libro
llamado "TuLibro", que puede ser el que contiene el codigo, o puede no
serlo. Asimismo, puede ser el activo, o no serlo.

en el 2º el codigo se ejecutara siempre sobre la Hoja1 del libro que
contiene el codigo, da igual el nombre o si es el activo o no.

sin embargo, y si no me equivoco, el 3º se ejecutara siempre sobre la
hoja1 del libro activo en el momento de ejecutarse el codigo, lo cual,
te puedo asegurar, puede ser sumamente arriesgado si no lo tienes muy
claro, y te aseguras de que el activo es el adecuado.

un saludo
Ivan



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