共用方式為


使用類別模組的程式

在 Access 中,模組有兩種類型:標準模組和類別模組。 在 Access 95,只有與表單或報表相關聯,類別模組才存在。 在 Access 97,類別模組也在資料庫視窗的模組索引標籤上。

使用類別模組建立自訂的物件

使用類別模組建立自訂物件的定義。 而用來儲存類別模組的名稱會成為您自訂物件的名稱。 您在類別模組中定義的公用程序 SubFunction 會成為物件的自訂方法。 公用的 Property LetProperty GetProperty Set 程序會成為物件的屬性。

已經在類別模組中定義程序後,您可以建立該類別的新實例來建立新物件。 若要建立類別的新實例,您要宣告類別所定義的類型變數。 例如,如果您的類別名稱是 ABasicClass,便可依下列方式建立該類別的新實例:

Dim abc As New ABasicClass

當您執行的程式碼包含這個宣告時,Visual Basic 會建立新實例。 使用變數,然後您就可以套用它的方法和屬性。 比方說,如果您定義了一個稱為 ListNames 的自訂方法,您可以套用它的方式如下所示:

abc.ListNames

建立表單類別 (Access 95) 的預設實例

不論您是從使用者介面或從 Visual Basic 在表單檢視中開啟表單時,您都建立了此表單之類別模組的實例。 換句話說,您指定了物件所在的記憶體空間,而且,您可以呼叫其方法並從程式碼設定或傳回其屬性,就像是使用任何內建物件一樣。 您在預覽列印中開啟報表也是一樣。

參閱 Visual Basic 程式碼中的表單時,通常會使用表單類別預設的實例。 在表單的類別只有一個預設實例。 您也可以從 Visual Basic 建立相同表單類別的多個實例。 當您建立表單類別的多個實例時,您即建立了非預設實例。

在此有四個方法可供建立表單的預設實例。 您可以經由使用者介面、執行 DoCmd 物件的 OpenForm 方法、呼叫 CreateForm 方法並將新的表單切換到表單檢視中,或使用 Visual Basic 建立 Form 類型的變數來參照至預設實例等方式開啟現有的表單。 下列範例會開啟員工表單並將 Form 物件變數指向它:

Dim frm As Form 
DoCmd.OpenForm "Employees" 
Set frm = Forms!Employees

Access 也提供捷徑,可讓您開啟表單,並用一個步驟參閱該表單的屬性或方法,或其中一個控制項。 您可以參閱表單的類別模組,如下列範例所示:

Form_Employees.Visible = True 
Form_Employees.Caption = "New Employees"

當您執行此程式碼時,如果 [員工] 表單尚未開啟,Access 會在表單檢視中開啟 [員工] 表單,並將表單的標題設定為 [新員工]。除非您將其 Visible 屬性明確設定為 True,否則表單不會顯示。 當呼叫此程式碼的程序完成執行時,表單的這個實例就會損毀。也就是說,就會關閉表單。

當員工表單在設計檢視中開啟時,如果您嘗試執行此程式碼,Access 就會產生執行階段錯誤。 表單必須是在表單檢視中開啟,否則完全無法開啟。

如果您使用此語法來改變表單的屬性或它的控制項之一,當表單的實例被破壞時,此改變會不見了。 無論何時您在表單檢視中變更表單的屬性設定值,這情況都會如此。 您必須變更設計檢視中的屬性,並將儲存表單變更。

建立表單的多個非預設實例

如果您要一次顯示多個表單實例,您可以建立表單類別的多個非預設實例。 例如,您可能要同時顯示員工和員工的主管的記錄。 您可以建立 [員工] 表單類別的一個實例來顯示員工的記錄,和另一個實例來顯示主管的記錄。

若要從 Visual Basic 建立表單類別的新增非預設實例,請宣告一類型為表單的類別模組名稱的變數。 您必須將關鍵字 New 包含在變數的宣告之中。 例如,下列程式碼可建立 [員工] 表單的新增實例然後將它設定為 Form 類型的變數:

Dim frm As New Form_Employees

在您明確設定此表單的非預設實例的 Visible 屬性之前,它是不可見的。

當建立此實例的程序已完成執行時,實例會從記憶體中移除,除非您已將代表此實例的變數宣告為模組層級變數。 由於模組層級變數可保留它們的值,直到使用 [執行] 功能表上的 [重新設定] 指令或工具列上的 [重新設定] 按鈕來重設,若變數已宣告為模組層級變數,表單將停留在開啟狀態。

您設定的任何屬性都會影響表單類別的實例,但不會與表單一起儲存。 而且,如果表單在設計檢視中開啟著,表單類別的新增實例也無法建立。

Forms 集合中,表單類別的非預設實例不能依名稱參照。 僅依索引編號參照它。 因為您可以建立表單的多個非預設實例,而且每一個實例都有相同的名稱,因此在 Forms 集合中您可有多個相同名稱的表單,而且除了使用索引號碼來區別它們之外已別無它法。

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應