Jak wywołać funkcję VBA do procedury podrzędnej
Wiem, że to proste pytanie dla kogoś, ale nigdy tak naprawdę nie używałem modułu funkcyjnego, ponieważ nie rozumiałem, czym one są.
Więc mam całą masę rzeczy, do których mogę tego użyć (ograniczyć redundancję), ale chcę wiedzieć, jak wywołuję procedurę sub (jak kliknięcie przycisku) z formularza.
Próbowałem tego...Sub Command_Click()
Call "pptCreator"
End Sub
Wiem, że to bardzo złe, ale nie mam pojęcia, jak wprowadzić to do procedury. 5 answers
Oto kilka różnych sposobów wywoływania rzeczy w programie Microsoft Access:
Aby wywołać SUB lub funkcję formularza z modułu
Sub w formularzu, do którego dzwonisz, musi być publiczny, jak w:
Public Sub DoSomething()
MsgBox "Foo"
End Sub
Wywołaj sub tak:
Call Forms("form1").DoSomething
Formularz musi być otwarty przed wykonaniem połączenia.
Aby wywołać procedurę zdarzenia, należy wywołać procedurę publiczną w formularzu i wywołać procedurę zdarzenia w tej procedurze publicznej.
Aby wywołać podprogram w module z formularza
Public Sub DoSomethingElse()
MsgBox "Bar"
End Sub
...po prostu zadzwoń do niego bezpośrednio z procedury wydarzenia:
Call DoSomethingElse
Wywołanie podprogramu z formularza bez użycia procedury zdarzenia
Jeśli chcesz, możesz powiązać funkcję ze zdarzeniem kontrolki formularza bez konieczności tworzenia procedury zdarzenia pod kontrolą. Aby to zrobić, najpierw potrzebujesz publicznej funkcji w module zamiast sub, jak to:
Public Function DoSomethingElse()
MsgBox "Bar"
End Function
Następnie, jeśli masz przycisk na formularzu, zamiast aby umieścić [procedurę Event] w zdarzeniu OnClick okna właściwości, należy umieścić to:
=DoSomethingElse()
Kiedy klikniesz przycisk, wywoła funkcję publiczną w module.
Wywołanie funkcji zamiast procedury
Jeśli wywołanie sub wygląda tak:
Call MySub(MyParameter)
Wywołanie funkcji wygląda następująco:
Result=MyFunction(MyFarameter)
Gdzie wynikiem jest zmienna typu zwracana przez funkcję.
Uwaga: nie zawsze potrzebujesz słowa kluczowego Call. Większość czas, możesz po prostu nazwać sub tak:
MySub(MyParameter)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-12 01:51:37
Jeśli pptCreator jest funkcją / procedurą w tym samym pliku, możesz wywołać go jak poniżej
call pptCreator()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-02 02:29:05
Wywołanie procedury podrzędnej-Technika trójdrożna
Gdy masz procedurę, niezależnie od tego, czy ją utworzyłeś, czy jest częścią języka Visual Basic, możesz jej użyć. Korzystanie z procedury jest również określane jako wywołanie go.
Przed wywołaniem procedury, powinieneś najpierw zlokalizować sekcję kodu, w której chcesz jej użyć. Aby wywołać prostą procedurę, wpisz jej nazwę. Oto przykład:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
msgbox strFullName
End Sub
Sub Exercise()
CreateCustomer
End Sub
Poza używaniem nazwy procedury, aby ją nazwać, możesz również poprzedzić ją za pomocą Call keyword. Oto przykład:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Sub Exercise()
Call CreateCustomer
End Sub
Podczas wywoływania procedury, bez lub bez słowa kluczowego Call, można opcjonalnie wpisać nawiasy otwierające i zamykające po prawej stronie jej nazwy. Oto przykład:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Sub Exercise()
CreateCustomer()
End Sub
Procedury i poziomy dostępu
Podobnie jak dostęp zmienny, dostęp do procedury może być kontrolowany przez poziom dostępu. Procedura może być prywatna lub Publiczna. Aby określić poziom dostępu do procedury, poprzedź ją prywatnym lub Publiczne słowo kluczowe. Oto przykład:Private Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Reguły, które zostały zastosowane do zmiennych globalnych są takie same:
Private: jeśli procedura jest prywatna, może być wywołana przez inne procedury tego samego modułu. Procedury modułów zewnętrznych nie mają dostępu do takiej procedury.
Ponadto, gdy procedura jest prywatna, jej nazwa nie pojawia się w oknie dialogowym makr
Public: procedura utworzona jako Publiczna może być wywołana przez procedury tego samego moduł i procedury innych modułów.
Również, jeśli procedura została utworzona jako Publiczna, gdy uzyskasz dostęp do okna dialogowego makr, pojawi się jej nazwa i możesz ją stamtąd uruchomić
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-22 15:36:19
Procedury w Module zaczynają być użyteczne i ogólne, gdy przekazujesz argumenty.
Na przykład:
Public Function DoSomethingElse(strMessage As String)
MsgBox strMessage
End Function
Może teraz wyświetlić dowolną wiadomość przekazywaną ze zmienną łańcuchową o nazwie strMessage.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-02 13:09:45
Aby dodać funkcję do nowego przycisku w formularzu: (i uniknąć użycia makra do wywołania funkcji)
Po utworzeniu funkcji (Function MyFunctionName ()) i znajdujesz się w widoku Projekt formularza:
- Dodaj nowy przycisk(nie sądzę, że możesz zmienić przypisanie starego przycisku-nie jestem jednak pewien).
- gdy otworzy się okno Kreatora przycisków, kliknij przycisk Anuluj.
- przejdź do zakładki właściwości przycisku zdarzenia-na polu kliknięcia.
- w tym polu rozwijane menu wybierz: Event Procedura.
- Teraz kliknij przycisk obok rozwijanego menu, które ma ... w nim zostaniesz przeniesiony do Nowego prywatnego Sub w oknie forms Visual Basic.
- W podtypie prywatnym: Call MyFunctionName
Powinno to wyglądać mniej więcej tak:
Private Sub Command23_Click ()
Call MyFunctionName
End Sub
-
Więc daruj sobie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-05 15:37:05