macros en hoja, thisworkbook o módulo ?

11/04/2007 - 15:01 por Pupuna | Informe spam
Disculpen mi ignorancia:

como inciden las macros en su aplicación si se los ubica (su código
en VB) en el sector de hojas, thisworkbook o módulo ?;
Mi duda también surge porque a veces aparece para ejecutarla desde la
barra de menues (herramientas, macro (alt+f8)) y otras no.
Gracias.
 

Leer las respuestas

#1 David
11/04/2007 - 17:06 | Informe spam
No tengo ningún conocimiento formal al respecto, pero te respondo con lo que
empíricamente y por experiencia yo he hecho.

Si pensamos en los macros editados desde VBA (a estos debería llamárseles
SubProcedimientos, y no macros), no importa si lo creas en una hoja, o en
ThisWorkbook o en un módulo. Siempre estará disponible para ser ejecutado,
ya sea por otro subprocedimiento, o desde la interfaz del usuario (Alt – F8).


Si necesitas un subprocedimiento privado, el cual sólo pueda ser ejecutado
desde otro, y no manualmente por el usuario, utiliza “Private” de la
siguiente manera:

Private Sub NombreDelMacro()
‘Instrucciones
End Sub

Ahora, si quieres hacer las cosas bien, te sugeriría guardar tus
subprocedimientos en módulos. De esa manera los podrías encontrar más
fácilmente, además de poder exportarlos para reutilizarlos en otros libros.

Normalmente los objetos Hoja y ThisWorkbook se utilizan para la programación
de eventos y de controles ActiveX. Por ejemplo, si quieres que tu libro no
sea guardado, a menos que se tenga autorización, podrías interceptar el
evento Save para preguntar por una contraseña de la siguiente manera:

1.
Desde el editor de VBA, entras al objeto ThisWorkbook.

2.
Sobre el código de este objeto verás dos cuadros combinados. En el primero,
selecciona WorkBook, y en el segundo BeforeSave.

3.
En el editor, te aparecerán dos líneas de código que limitan el evento
BeforeSave del objeto Workbook. Allí puedes escribir lo siguiente:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If UCase(InputBox("Contraseña requerida")) <> "ABC" Then
Cancel = True
End If
End Sub

Ahora, con estas ideas, puedes buscar en la ayuda de VBA todo lo que puedes
hacer con los eventos y con los controles ActiveX de estos objetos.

Espero ayudarte, y no enredarte más… mientras alguien aclara o amplía un
poco más estos conceptos. Siempre comentas.

Saludos.



"Pupuna" escribió:

Disculpen mi ignorancia:

como inciden las macros en su aplicación si se los ubica (su código
en VB) en el sector de hojas, thisworkbook o módulo ?;
Mi duda también surge porque a veces aparece para ejecutarla desde la
barra de menues (herramientas, macro (alt+f8)) y otras no.
Gracias.


Preguntas similares