Как вызвать функцию VBA в процедуру Sub

Я знаю, что это простой вопрос для кого-то там, но я никогда не использовал функциональный модуль вообще, потому что я не понимал, что они были.

поэтому у меня есть целая куча вещей, для которых я могу использовать это (сократить избыточность), но я хочу знать, как я вызываю процедуру sub (например, щелчок кнопки) из формы.

Я попытался это...

Sub Command_Click()
    Call "pptCreator"
End Sub

Я знаю, что это очень плохо, но я понятия не имею, как привести это в порядок.

5 ответов


вот некоторые из различных способов, которыми вы можете называть вещи в Access:

для вызова формы sub или функции из модуля

sub в форме, которую вы вызываете, должен быть публичным, как в:

Public Sub DoSomething()
  MsgBox "Foo"
End Sub

вызовите подлодку так:

Call Forms("form1").DoSomething

форма должна быть открыта перед вызовом.

чтобы вызвать процедуру события, необходимо вызвать общедоступную процедуру в форме и вызвать процедуру события в этой форме публичная процедура.

для вызова подпрограммы в модуле формы

Public Sub DoSomethingElse()
  MsgBox "Bar"
End Sub

...просто позвоните прямо из вашей процедуры события:

Call DoSomethingElse

для вызова подпрограммы из формы без использования процедуры события

если вы хотите, вы можете фактически привязать функцию к событию элемента управления формы без создания процедуры события под элементом управления. Для этого вам сначала нужна публичная функция в модуле вместо sub, например это:

Public Function DoSomethingElse()
  MsgBox "Bar"
End Function

затем, если у вас есть кнопка на форме, вместо того, чтобы помещать [процедура события] в событие OnClick окна Свойства, поместите это:

=DoSomethingElse()

когда вы нажмете кнопку, она вызовет публичную функцию в модуле.

для вызова функции вместо процедуры

если вызов sub выглядит так:

Call MySub(MyParameter)

тогда вызов функции выглядит так:

Result=MyFunction(MyFarameter)

где результат переменная типа, возвращаемая функцией.

Примечание: не всегда нужно ключевое слово Call. Большую часть времени вы можете просто вызвать sub следующим образом:

MySub(MyParameter)

если pptCreator является функцией / процедурой в том же файле, вы можете вызвать его, как показано ниже

call pptCreator()


вызов Sub процедуры-3 Способ техники

как только у вас есть процедура, независимо от того, создали ли вы ее или она является частью языка Visual Basic, вы можете использовать ее. Использование процедуры также называется вызовом.

перед вызовом процедуры необходимо сначала найти раздел кода, в котором вы хотите ее использовать. Чтобы вызвать простую процедуру, введите ее имя. Вот пример:

Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"

msgbox strFullName
End Sub

Sub Exercise()
    CreateCustomer
End Sub

Помимо использования имени процедуры для ее вызова, вы можете также перед ним ключевое слово Call. Вот пример:

Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"
End Sub

Sub Exercise()
    Call CreateCustomer
End Sub

при вызове процедуры, без или без ключевого слова вызова, вы можете дополнительно ввести Открытие и закрытие скобки в правой части его имени. Вот пример:

Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"
End Sub

Sub Exercise()
    CreateCustomer()
End Sub

процедуры и уровни доступа

как и доступ к переменной, доступ к процедуре может управляться уровнем доступа. Процедура может быть закрытой или публичной. Чтобы указать уровень доступа процедура, предшествует ей с помощью ключевого слова Private или Public. Вот пример:

Private Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"
End Sub

правила, которые были применены к глобальным переменным, одинаковы:

Private: если процедура сделана частной, она может быть вызвана другими процедурами того же модуля. Процедуры внешних модулей не могут получить доступ к такой процедуре.

кроме того, если процедура является частной, ее имя не отображается в диалоговом окне макросы

общественные: Процедура, созданная как public, может быть вызвана процедурами того же модуля и процедурами других модулей.

кроме того, если процедура была создана как общедоступная, при доступе к диалоговому окну макросов появляется ее имя, и вы можете запустить ее оттуда


процедуры в модуле начинают быть полезными и универсальными при передаче аргументов.

например:

Public Function DoSomethingElse(strMessage As String)  
    MsgBox strMessage
End Function

теперь можно отобразить любое сообщение, переданное со строковой переменной strMessage.


чтобы добавить функцию к новой кнопке в форме: (и избегайте использования макроса для вызова функции)

после того, как вы создали свою функцию (функция MyFunctionName ()), и вы находитесь в представлении дизайна формы:

  1. добавить новую кнопку (не думаю, что вы можете переназначить старую кнопку - не уверен, хотя).
  2. когда откроется окно Мастера кнопок, нажмите кнопку Отмена.
  3. перейдите на вкладку "Свойства кнопки" - нажмите - поле.
  4. в раскрывающемся меню этого поля выберите: процедура события.
  5. Теперь нажмите на кнопку рядом с выпадающим меню, которое имеет ... в нем и вас отведут в а new Private Sub в окне формы Visual Basic.
  6. в этом частном подтипе: вызовите MyFunctionName
    Это должно выглядеть примерно так:

Private Sub Command23_Click ()

Вызовите MyFunctionName

конец Sub

  1. тогда просто сохраните его.