Do zamykania obiektów (np.formularzy, raportów) w VBA służy metoda docmd – Close.

Metoda Docmd.Close ma 3 argumenty:
-
-
- ObjectType – typ zamykanego obiektu
- ObjectName – nazwa zamykanego obiektu
- Save – zapis zmian
-
Wszystkie te argumenty są opcjonalne. Jeżeli pierwszy i drugi argument zostaną opuszczone, domyślnym obiektem jest ten, który jest aktywny. Trzeci argument jest związany z zapisem zmian w zamykanym obiekcie – wartość domyślna to acSavePrompt czyli monit.
W swoich projektach często stosuję tę metodę, również do poruszania się między formularzami. Jeżeli chcę np. po naciśnięciu przycisku polecenia zamknąć formularz i otowrzyć inny – robię to najczęściej tak:
Private Sub PolecenieDoSpisu_Click() DoCmd.Close '(…) End Sub |
Jeżeli w kolejnym kroku ma zostać otwarty inny formularz – najpierw zamykamy ten aktywny, a w kolejnych liniach kodu dopiero otwieramy nowy.
Jeżeli ten nowy formularz ma być otwarty z parametrem, którego źródłem jest jakieś pole z zamykanego formularza – konieczne jest przypisanie tej wartości do zmiennej w procedurze jeszcze przed zamknięciem formularza.
Np.
Private Sub PolecenieDoSpisu_Click() Dim JParam JParam=Me.PoleP DoCmd.Close DoCmd.OpenForm „SpisKsiazek”, , , , , , JParam '(…) End Sub |