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.

Preguntas similare

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.


Respuesta Responder a este mensaje
#2 Héctor Miguel
12/04/2007 - 08:44 | Informe spam
hola, 'tocayo' ?

como inciden las macros en su aplicacion si se los ubica (su codigo en VB) en el sector de hojas, thisworkbook o modulo ?
Mi duda tambien surge porque a veces aparece para ejecutarla desde... herramientas, macro (alt+f8) y otras no...



solo para complementar la informacion que ya muy bien te proporciona David...
-> cuando los procedimientos vba -> NO 'aparecen' en el dialogo de las macros en la interfase con el usuario...
a) el procedimiento [Sub/Function] esta 'declarado' como privado: -> Private Sub Mi_macro()
b) el modulo total esta 'declarado' como privado: -> Option Private Module [esto en el area de las declaraciones]
c) el procedimiento [Sub] 'toma' o requiere/recibe/necesita/... argumentos: -> Sub Mi_macro(Arg1, Arg2, ...)

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