¿Cómo llamo una función VBA a un subprocedimiento?
-
21-08-2019 - |
Pregunta
Sé que esta es una pregunta simple para alguien, pero nunca he usado ningún módulo de funciones porque no entendía qué eran.
Así que tengo un montón de cosas para las que puedo usar esto (reducir la redundancia), pero quiero saber cómo invoco un procedimiento secundario (como hacer clic en un botón) desde un formulario.
Probé esto...
Sub Command_Click()
Call "pptCreator"
End Sub
Sé que es bastante malo, pero no tengo idea de cómo convertir esto en un procedimiento.
Solución
Estas son algunas de las diferentes formas en que puede llamar a cosas en Microsoft Access:
Para llamar a un subformulario o función desde un módulo
El sub del formulario al que llama DEBE ser público, como en:
Public Sub DoSomething()
MsgBox "Foo"
End Sub
Llame al sub así:
Call Forms("form1").DoSomething
El formulario debe estar abierto antes de realizar la llamada.
Para llamar a un procedimiento de evento, debe llamar a un procedimiento público dentro del formulario y llamar al procedimiento de evento dentro de este procedimiento público.
Para llamar a una subrutina en un módulo desde un formulario
Public Sub DoSomethingElse()
MsgBox "Bar"
End Sub
...simplemente llámelo directamente desde el procedimiento de su evento:
Call DoSomethingElse
Para llamar a una subrutina desde un formulario sin utilizar un procedimiento de evento
Si lo desea, puede vincular la función al evento del control de formulario sin tener que crear un procedimiento de evento bajo el control.Para hacer esto, primero necesita una función pública en el módulo en lugar de un sub, como este:
Public Function DoSomethingElse()
MsgBox "Bar"
End Function
Luego, si tienes un botón en el formulario, en lugar de poner [Procedimiento de evento] en el evento OnClick de la ventana de propiedades, pon esto:
=DoSomethingElse()
Cuando hace clic en el botón, llamará a la función pública en el módulo.
Para llamar a una función en lugar de un procedimiento
Si llamar a un sub se ve así:
Call MySub(MyParameter)
Entonces llamar a una función se ve así:
Result=MyFunction(MyFarameter)
donde Resultado es una variable de tipo devuelta por la función.
NOTA: No siempre necesitas la palabra clave Llamar.La mayoría de las veces, puedes llamar al sub así:
MySub(MyParameter)
Otros consejos
Si pptCreator es una función / procedimiento en el mismo archivo, se puede llamar así como a continuación
call pptCreator()
Llamar a un procedimiento Sub - 3 Camino técnica
Una vez que tenga un procedimiento, ya sea que lo creó o si es parte del lenguaje Visual Basic, puede utilizarlo. Usando un procedimiento también se conoce como llamar a él.
Antes de llamar a un procedimiento, primero debe localizar la sección de código en la que desea utilizarlo. Para llamar a un procedimiento simple, escriba su nombre. He aquí un ejemplo:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
msgbox strFullName
End Sub
Sub Exercise()
CreateCustomer
End Sub
Además de utilizar el nombre de un procedimiento para llamarlo, también puede precederla con la palabra clave Call. He aquí un ejemplo:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Sub Exercise()
Call CreateCustomer
End Sub
Cuando se llama a un procedimiento, sin o sin la palabra clave Call, puede escribir opcionalmente una apertura y un cierre paréntesis en la parte derecha de su nombre. He aquí un ejemplo:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Sub Exercise()
CreateCustomer()
End Sub
Los procedimientos y niveles de acceso
Al igual que un acceso variable, el acceso a un procedimiento puede ser controlado por un nivel de acceso. Un procedimiento puede ser hecha pública o privada. Para especificar el nivel de acceso de un procedimiento, precedido de la privada o la palabra clave pública. He aquí un ejemplo:
Private Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Las reglas que se aplicaron a las variables globales son los mismos:
Privada: Si un procedimiento se hace privada, que puede ser llamado por otros procedimientos del mismo módulo. Procedimientos de módulos externos no pueden acceder a un procedimiento de este tipo.
Además, cuando un procedimiento es privado, su nombre no aparece en el cuadro de diálogo Macros
Pública:. Un procedimiento creada como público puede ser llamado por los procedimientos del mismo módulo y mediante procedimientos de otros módulos
Además, si un procedimiento se creó como pública, cuando se accede al cuadro de diálogo Macros, su nombre aparece y se puede ejecutar desde allí
Los procedimientos en un módulo comienzan a ser útil y genérico cuando se pasa en argumentos.
Por ejemplo:
Public Function DoSomethingElse(strMessage As String)
MsgBox strMessage
End Function
Ahora se puede mostrar cualquier mensaje que se pasa con la variable de cadena llamada strMessage.
Para agregar una función a un nuevo botón en su Formulario: (y evitar el uso de la función macro para llamar)
Una vez que ha creado su función (MyFunctionName Función ()) y se encuentra en forma de vista de diseño:
- Añadir un nuevo botón (no creo que se puede volver a asignar un botón de edad - no estoy seguro sin embargo).
- Cuando la ventana del asistente de botón se abre en Cancelar.
- Vaya a las propiedades del botón Tab Evento - Al hacer clic -. Campo
- A que los campos del menú desplegable seleccione:. Procedimiento de evento
- Ahora haga clic en el botón al lado del menú desplegable que tiene en ella ... y se le llevará a un nueva Private Sub en los formularios de Visual ventana Básico.
- En ese privada Tipo Sub: Call MyFunctionName
Debe ser algo como esto:
Private Sub Command23_Click ()
Llamada MyFunctionName
End Sub
- A continuación, sólo guardarlo.