Como posso chamar uma função VBA em um Sub Procedimento
-
21-08-2019 - |
Pergunta
Eu sei que esta é uma pergunta simples para alguém lá fora, mas eu nunca realmente utilizado módulo de função em todos, porque eu não entendia o que eram.
Então, eu tenho um monte de coisas que eu posso usar isso para (reduzir a redundância), mas eu quero saber como eu chamo em uma sub (como um clique de botão) procedimento a partir de um formulário.
Eu tentei isso ...
Sub Command_Click()
Call "pptCreator"
End Sub
Eu sei que é muito ruim, mas não tenho idéia de como trazer isso em um procedimento.
Solução
Aqui estão algumas das diferentes maneiras que você pode chamar as coisas no Microsoft Access:
Para chamar uma sub forma ou função de um módulo
O sub na forma que você está chamando deve ser público, como em:
Public Sub DoSomething()
MsgBox "Foo"
End Sub
Chamada do sub parecido com isto:
Call Forms("form1").DoSomething
O formulário deve ser aberto antes de fazer a chamada.
Para chamar um procedimento de evento, você deve chamar um procedimento público dentro do formulário e chamar o procedimento de evento dentro deste procedimento público.
Para chamar uma sub-rotina em um módulo de um formulário
Public Sub DoSomethingElse()
MsgBox "Bar"
End Sub
... basta chamá-lo diretamente de seu procedimento de evento:
Call DoSomethingElse
Para chamar uma sub-rotina de uma forma sem o uso de um procedimento de evento
Se você quiser, você pode realmente ligar a função para o evento do controle de formulário sem ter que criar um procedimento de evento sob o controle. Para fazer isso, você primeiro precisa de uma função pública no módulo em vez de um sub, como este:
Public Function DoSomethingElse()
MsgBox "Bar"
End Function
Então, se você tem um botão no formulário, em vez de colocar [Procedimento de evento] no evento OnClick da janela de propriedades, coloque o seguinte:
=DoSomethingElse()
Quando você clica no botão, ele irá chamar a função pública no módulo.
Para chamar uma função em vez de um procedimento
Se chamar um sub parecido com este:
Call MySub(MyParameter)
Em seguida, chamar uma função parecida com esta:
Result=MyFunction(MyFarameter)
onde O resultado é uma variável do tipo retornado pela função.
NOTA: Você não precisa sempre a palavra-chave chamada. Na maioria das vezes, você pode simplesmente chamar o sub como esta:
MySub(MyParameter)
Outras dicas
Se pptCreator é uma função / procedimento no mesmo arquivo, você poderia chamá-lo como abaixo
call pptCreator()
Chamar um Sub Procedimento - 3 técnica Way
Depois de ter um procedimento, se você criou ou que é parte da linguagem Visual Basic, você pode usá-lo. Usando um procedimento também é referido como chamá-lo.
Antes de chamar um procedimento, você deve primeiro localizar a seção do código em que você quiser usá-lo. Para chamar um procedimento simples, digite seu nome. Aqui está um exemplo:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
msgbox strFullName
End Sub
Sub Exercise()
CreateCustomer
End Sub
Além de usar o nome de um procedimento de chamá-lo, você também pode precedê-lo com a palavra-chave chamada. Aqui está um exemplo:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Sub Exercise()
Call CreateCustomer
End Sub
Ao chamar um procedimento, sem ou sem a palavra-chave chamada, você pode, opcionalmente, digite uma abertura e um parênteses de fechamento no lado direito de seu nome. Aqui está um exemplo:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Sub Exercise()
CreateCustomer()
End Sub
Procedimentos e Níveis de Acesso
Como um acesso variável, o acesso a um procedimento pode ser controlada por um nível de acesso. Um procedimento pode ser feito privada ou pública. Para especificar o nível de acesso de um procedimento, precedê-lo com o privado ou da palavra chave pública. Aqui está um exemplo:
Private Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
As regras que foram aplicadas a variáveis ??globais são os mesmos:
Privada: Se um procedimento é feito privada, ele pode ser chamado por outros procedimentos do mesmo módulo. Procedimentos de módulos externos não pode acessar procedimento tal.
Além disso, quando um procedimento é particular, o seu nome não aparece na caixa de diálogo Macros
Público:. Um procedimento criado como público pode ser chamado por procedimentos do mesmo módulo e por procedimentos de outros módulos
Além disso, se um procedimento foi criado como público, quando você acessa a caixa de diálogo Macros, suas aparece nome e você pode executá-lo de lá
Procedimentos em um módulo começar a ser útil e genérico quando você passar argumentos.
Por exemplo:
Public Function DoSomethingElse(strMessage As String)
MsgBox strMessage
End Function
Agora pode exibir qualquer mensagem que é passada com a variável de cadeia chamado strMessage.
Para adicionar uma função para um novo botão no formulário: (e evitar o uso de macro para função de chamada)
Depois que você criou sua função (MyFunctionName Function ()) e você está na forma de exibição de design:
- Adicionar um novo botão (Eu não acho que você pode reatribuir um botão de idade - não tenho certeza embora).
- Quando a janela Assistente no botão abre clique em Cancelar.
- Vá para as propriedades do botão guia evento - On Click -. Campo
- No que os campos de menu suspenso, selecione:. Procedimento de evento
- Agora clique no botão ao lado do menu drop-down que tem ... nele e você será levado para um new Private Sub nos formulários Visual janela Básico.
- Nesse privado Tipo Sub: Chamada MyFunctionName
Deve ser algo como isto:
Private Sub Command23_Click ()
Chamada MyFunctionName
End Sub
- Em seguida, basta salvá-lo.