Copyright: Copyright(c) 1996 Microsoft Corporation.
Citation: Copyright(c) 1996 Microsoft Corporation.


CheckBox 控制項

顯示項目的選取狀態。

請注意

利用 CheckBox 讓使用者可以從二選一，如 Yes/No、True/False，或 On/Off。當使用者選取 CheckBox 時，會顯示一個特定的符號 ( 例如 X )，且其設定值為 Yes、True 或 On；如果使用者未選取 CheckBox，則為空白且其設定值為 No、False 或 Off；CheckBox 也可以是空值，但要看 TripleState 的屬性值而定。

如果 CheckBox 連結到一個資料來源，則任何更改的設定都會改變其資料來源。一個未啟用的 CheckBox 仍然會顯示其目前設定值，但會變成灰色且無法從使用介面改變其設定值。

您也可以使用核取方塊，讓使用者可從一組相關項目中選取想要的。例如，您可以建立含有數個具有 CheckBox 項目的訂單，使用者可經由對應的 CheckBox，選取一或數個項目。

CheckBox 的預設屬性是 Value 屬性。

CheckBox 的預設事件 Click 事件。

附註   ListBox 也可讓您自己選擇核取符號。您也可以使用 ListBox 代替一組 CheckBox 控制項，這要視應用程式的需求而定。


ComboBox 控制項

結合了 ListBox 和 TextBox 的特性。使用者可以像在 TextBox 中輸入新值；或像在 ListBox 中選取既有的值。

請注意

如果 ComboBox 連結到一個資料來源，則 ComboBox 會將所輸入或所選取的值加到資料來源中。如果多行下拉式清單方塊有連結資料，則 BoundColumn 屬性會決定要儲存到資料來源的值。

ComboBox 的清單中含有多個資料列，每個資料列可有一或多個資料行，且可能具有標題，有些應用程式沒有支援行標題，而有些應用程式則可能只有部份支援。

ComboBox 的預設屬性 Value 屬性。

ComboBox 的預設事件是 Change 事件。

附註  如果您需要顯示多行資料，也可以選用 ListBox 來代替 ComboBox。若您想使用 ComboBox 並限制只能使用清單中的值，您可設定 ComboBox 的 Style 屬性，使控制項看起來像一個下拉式清單。


CommandButton 控制項

用來啟始、結束、或者中斷一個或一系列的動作。

請注意

指定給 CommandButton 之 Click 事件的巨集或事件程序將決定 CommandButton 的作用。例如，您可以建立用來開啟另一個表單的 CommandButton。若有需要，您也可以在 CommandButton 上顯示文字或圖片。

CommandButton 的預設屬性是 Value 屬性。

CommandButton 的預設事件是 Click 事件。


Frame 控制項

用來建立一個功能相關並可看見的控制項群組。

請注意

所有在 Frame 中的選項按鈕都是互斥的，所以您可以使用 Frame 來建立一個選項群組，您也可以使用 Frame 組織一些相關的控制項。舉例來說，在一個處理客戶訂單的應用程式中，您可使用 Frame 來組織類似客戶名稱、住址、和帳號等資料。

您也可以使用 Frame 建立一組 Toggle 按鈕，但 Toggle 按鈕並不必是互斥的。

Frame 的預設事件是 Click 事件。


Image 控制項

在表單中顯示一張圖片。

請注意

Image 可以讓您在表單中顯示圖片。例如，您可使用 Image 在個人資料表單中顯示員工照片。

Image 也可讓您裁剪、放大、和縮小圖片，但不可用來編輯圖片內容。例如，您無法使用 Image 改變圖片顏色、將圖片設為透明，或修改圖片的內容。您必須使用影像編輯軟體才能達到此目的。

Image 支援下列幾種檔案格式：

•	*.bmp

•	*.cur

•	*.gif

•	*.ico

•	*.jpg

•	*.wmf

附註   您可以在 Label 上顯示圖片，不過 Label 並不能讓您裁剪、放大、和縮小圖片。

Image 的預設事件是 Click 事件。


ListBox 控制項

顯示一系列的值，讓使用者可從中選擇一或多個值。

請注意

如果 ListBox 連結到一個資料來源，則 ListBox 會將所選取的值儲存到資料來源。

ListBox 除可做為一個單純的清單外，也可以是 OptionButton 控制項或 CheckBox 的控制項群組。

ListBox 的預設屬性是 Value 屬性。

ListBox 的預設事件是 Click 事件。

附註  您無法把文字拖放到下拉式的 ListBox 中。


MultiPage 控制項

可同時顯示多個螢幕的資訊。

請注意

MultiPage 常用於想顯示可分類的大量資料。例如，使用 MultiPage 顯示員工資料時，一頁可放置姓名和地址等資料；另一頁可顯示前一位員工的資料；第三頁則是一些參考資料。MultiPage 可讓您整合相關資料，以提高整個資料的可讀性。

新增的頁籤會被放到目前選取頁的右邊。

附註  MultiPage 是 Pages 集合的收納器，其中包含一或多個 Page 物件。

MultiPage 的預設屬性是 Value 屬性，且會傳回目前作用中的 Page 在 MultiPage 中的索引值。

MultiPage 的預設事件是 Change 事件。


OptionButton 控制項

顯示在一個選項群組中被選取項目之狀態。

請注意

使用 OptionButton 在一個群組中顯示被選取的項目，請注意在一個 Frame 中的 OptionButton 是互斥的。

如果 OptionButton 連結到一個資料來源 ，OptionButton 可以顯示資料來源的值，如 Yes/No、True/False、或 On/Off。如果使用者選取了OptionButton，則目前設定是 Yes、True、或 On；如果使用者沒有選取 OptionButton，則設定是 No、False、或 Off。例如，OptionButton在一財產目錄管理的應用程式可顯示某一項財產狀況。如果OptionButton 連結到一資料來源，則任何的設定改變都會改變資料來源的值。一個未啟用的 OptionButton 仍會顯示其目前設定值，但會變成灰色，且無法從使用介面改變其設定值。

OptionButton 也可以是空值，但要依 TripleState 的屬性值而定。

您也可以在一群組方塊中使用 OptionButton 選取一或多個相關選項。例如，您可以產生一訂單表單，並在每一項目前加上 OptionButton。使用者可以藉由 OptionButton 設定相關的選項。

OptionButton 的預設屬性是 Value 屬性。

OptionButton 的預設事件是 Click 事件。


ScrollBar 控制項

依捲動方塊的位置來傳回或設定另一控制項的值。

請注意

ScrollBar 是一個獨立的控制項。您雖可在一些控制項，如 ListBox 或ComboBox 中，看到外觀類似的部份。然而，ScrollBar 與之不同，它是完全獨立的控制項，而非其它控制項的一部份。

當使用 ScrollBar 設定或讀取另一個控制項時，您必須為 ScrollBar 的事件和方法編寫程式。例如，使用 ScrollBar 修改 TextBox 的值，您可以編寫程式去讀取 ScrollBar 的 Value 屬性值，然後再設定TextBox 的 Value 屬性值。

ScrollBar 的預設屬性是 Value 屬性。

ScrollBar 的預設事件是 Change 事件。

附註  若要建立水平或垂直 ScrollBar，可在表單中拖曳 ScrollBar 的調整控點，以設定其大小。


SpinButton 控制項

可用來遞增或遞減一個數字。

請注意

按下 SpinButton 只會改變 SpinButton 的值。您也可以使用SpinButton 編寫程式去修改另外一控制項的值。例如，您可以使用SpinButton 改變日期中的年、月、日的值。您也可以用 SpinButton 捲過一定範圍的值或項目清單，或直接修改文字方塊中的值。

當要顯示用 SpinButton 修改的值，您必須指定 SpinButton 的值到一控制項的顯示部份，諸如 Label 的 Caption 屬性或 TextBox 的Text 屬性。若要建立水平或垂直 SpinButton，可在表單中拖曳 SpinButton 的調整控點，以設定其大小。

SpinButton 的預設屬性是 Value 屬性。

SpinButton 的預設事件是 Change 事件。


TabStrip 控制項

以群組的方式來顯示一組相關的控制項。

請注意

您可以使用 TabStrip 來查看相關控制項中的不同資訊。

例如，一個控制項用來做為個人日程表展示資訊之用，其中每組資訊代表了群組中某一相關的個人資訊，而各頁頁籤則顯示每個人的名字。然後，您可以編寫程式，當您按下某頁頁籤，馬上顯示對應此頁的個人相關資訊。

附註  TabStrip 用來做為一個 Tabs 集合的收納器，它包含了一個 Tab 物件群組。

TabStrip 的預設屬性是 SelectedItem 屬性。

TabStrip 的預設事件是 Change 事件。


TextBox 控制項

顯示來自使用者或一有組織的資料集。

請注意

TextBox 是最常用來顯示使用者輸入資訊的控制項。同時，它也可以用來顯示一組資料，諸如像資料表、查詢、工作表，或一些計算結果。如果 TextBox 連結到一個資料來源，則修改 TextBox 內容時，也會修改資料來源的值。

若在 TextBox 中設定任何文字格式，都會應用到整個控制項的內容中。例如，若您改變某個字元的字型點數，則控制項中所有文字的字型大小都會變成一樣。

TextBox 的預設屬性是 Value 屬性。

TextBox 的預設事件是 Change 事件。


ToggleButton 控制項

用來顯示一個項目的選取狀態。

請注意

使用 ToggleButton 可顯示一個項目是否被選取。如果 ToggleButton 連結到一個資料來源，則 ToggleButton 會顯示目前資料來源的值， 像 Yes/No、True/False、On/Off，或其他二選一的設定。如果使用者選取 ToggleButton，則目前設定變為Yes、True，或 On；如果使用者沒有選取 ToggleButton，則設定為 No、False，或 Off。如果 ToggleButton 連結到資料來源，則改變內容時也會改變到資料來源的值。一個未啟用的 ToggleButton 仍然會顯示設定值，但會變成灰色，而且也不能由使用介面修改其設定。

您可以在 Frame 中使用 ToggleButton 選取同一群組中一或多個相關項目。例如，您可以建立有多個選項的訂單，且每個選項前都有一 ToggleButton，使用者可以用 ToggleButton 指定該項目的狀況。

ToggleButton 的預設屬性是 Value 屬性。

ToggleButton 的預設事件是 Click 事件。


DataObject 物件

在進行轉換動作時，做為格式化文字資料的暫存區域。其也可以暫存和儲存在 DataObject 的文字片段相關的格式。

請注意

DataObject 可以包含一份剪貼簿文字格式的資料，和一份其他種類的文字格式的資料，例如像自訂或使用者定義格式。

DataObject 不同於剪貼簿，DataObject 可支援一些剪貼簿和拖放功能的指令。當您使用到剪貼簿 ( 例如 GetText ) 或拖放功能時，這些相關的資料都會被移動到 DataObject 中。

DataObject 工作方式類似於剪貼簿。如果您複製文字字串至DataObject，則 DataObject 會儲存這些文字字串。如果您複製第二筆相同格式字串至 DataObject，則 DataObject 會刪除第一筆字串而保留第二筆。它會儲存指定的文字格式且保留最近的文字資料。


Font 物件

定義控制項或表單中文字的屬性。

請注意

每個控制項或表單都自己的 Font 物件，讓您可獨立設定其文字屬性。使用字型屬性可以設定字型名稱、粗體或加底線文字，或是調整字型大小。

附註  表單或收納器的字型屬性將決定其中各控制項的預設字型屬性。

Font 物件的預設屬性是 Name 屬性。如果 Name 屬性包含一個空字串，表示 Font 物件會使用預設的系統字型。


Label 控制項

顯示描述性文字。

請注意

表單中的 Label 控制項通常用來顯示一些描述性文字，如標題、圖片或是簡易的指示。例如，住址簿中可能包括名字、街道或城市名的 Label。Label 並不能顯示資料來源或運算式的值；它是非資料連結且不因移動資料錄而有任何改變的。

Label 的預設屬性是 Caption 屬性。

Label 的預設事件是 Click 事件。


Page 物件

MultiPage 中的一頁和 Pages 集合中的一個成員。

請注意

每個 Page 物件都含有自己的控制項，且與集合物件中其他頁的資訊無關。Page 會繼承其收納器的屬性，繼承屬性的值都是由收納器所設定。

在 Pages 集合物件中，Page 有唯一的名稱及索引值。您可以經由名字或是索引值引用一個 Page。第一個 Page 的索引值是 0；第二個 Page的索引值是 1，依此類推。若兩個 Page 物件具有相同名稱時，您就必須藉由它們的索引值來引用某個 Page。

第一個 Page 的預設名稱是 Page1；第二個 Page 的預設名稱是 Page2。


Tab 物件

在 Tabs 集合物件中 Tab 是一個獨立的成員。

請注意

外觀上看，Tab 物件像是突出於一長方形區域的矩形物件，或像是和長方形區域相鄰的按鈕。

相對於 Page，Tab 並不含有任何控制項。控制項只出現在 TabStrip 所包圍的區域中。

每個 Tab 有其自己的屬性，但卻沒有方法或事件。您必須在適當的TabStrip 中使用適當的事件來引發個別 Tab 的處理。

每個 Tab 在集合物件內都有唯一的名稱及索引值。您可以經由名字或是索引值來引用 Tab，第一個 Tab 的索引值是 0；第二個 Tab 的索引值是 1；以此類推。當有兩個 Tab 物件具有相同名稱時，您就必須藉由它們的索引值來引用每個 Tab。


Controls 集合物件

物件中所有的控制項。

請注意

在物件中之 Controls 集合物件的每個控制項都具有唯一的索引，且此索引值可以是一個整數或是字串。集合物件中，第一個控制項的索引值是 0；第二個控制項的索引值是 1，以此類推。此值說明了控制項在集合物件中的先後順序。

如果索引值是字串，則代表控制項名稱。而一控制項的 Name 屬性依然代表控制項名稱。

您可以使用 Controls 集合物件列舉或計算個別的控制項，而且設定它們的屬性。例如，您可以列舉某個表單的 Controls 集合，並且以設定每一個控制項的 Height 屬性。

附註  For Each...Next 陳述式在列舉一集合物件時，非常有用。


Pages 集合物件

Pages 集合物件包含一個 MultiPage 所有的頁。

請注意

每個 Pages 集合物件都提供了一些功能，來管理集合物件中各成員，並區別出使用中的頁。

在 Pages 集合中 Page 有唯一的名稱及索引值。您可經由名字或是索引值來引用 Page。第一個 Page 的索引值是 0；第二個 Page的索引值是 1；以此類推。第一個 Page 的預設名稱是 Page1；第二個 Page 的預設名稱是 Page2。

Pages 集合的預設值為集合中目前正在使用的 Page。


Tabs 集合物件

Tabs 集合包含了所有 TabStrip 中的Tabs。

請注意

每個集合物件都提供了一些功能，來管理集合物件中各成員，並區別出使用中的頁。

Tabs 集合的預設值為集合物件中目前正在使用的 Tab。

在 Tab 集合中，各 Tab 都有唯一的名稱及索引值。您可以經由名字或是索引值來引用 Tab。索引值說明了集合中 Tab 的順序位置。第一個 Tab 的索引值是 0；第二個 Tab 的索引值是 1；以此類推。


Microsoft Forms 物件模組概觀


什麼是 MultiPage ﹖

MultiPage（活頁控制項）為一包含多個 Page 之集合物件。

MultiPage 的每個 Page 都是一個包含專屬控制項的表單，因此，每一頁籤都擁有自己的顯示區，也就是說，不同 Page 的顯示內容不會在同一個時間出現在顯示區內，造成干擾的情形。一般而言，MultiPage 的每一個頁籤都有其對應的 Tab，使用者可以選取其中的任何一頁籤。

MultiPage 的預設狀況為兩個頁籤，稱為第一個頁籤和第二個頁籤。MultiPage 的每個頁籤都是一個 Page 物件，所有的 Page 物件則統稱為 Pages 集合。如果增加新的頁籤，新增的頁籤都會自動加入現有的 Pages 集合裏面。


什麼是 TabStrip ﹖

TabStrip 為一包含多個頁籤之集合物件。

TabStrip 的每一個 Tab 都可以讓使用者單獨選擇。但就視覺效果來說，TabStrip 的每個 Tab 並非像活頁控制項一樣擁有獨立的顯示區，而是所有頁籤共用一個顯示區，亦即，同一分頁控制項內不同頁籤的顯示內容可能同時出現在顯示區內。

TabStrip 的預設狀況為兩個頁籤，稱為第一頁籤和第二頁籤。每一個頁籤都是一個 Tab 物件，所有的頁籤則統稱為 Tabs 集合。如果增加新的頁籤，新增的頁籤都會自動加入現有的 Tabs 集合之中。


該用 MultiPage 還是 TabStrip﹖

如果您的資料不需要分頁或分層顯示，建議使用 TabStrip，並且把資料分類，每一類資料使用一個頁籤 。如果您的資料需要分頁或分層顯示，且不同的頁或層不需要同時顯示，建議使用 MultiPage，並把資料分類，每一類資料使用一個頁籤。

TabStrip 的工作區並不像 MultiPage 的頁籤一般，本身就是一獨立的表單，而只是包含該 TabStrip 之表單的一部份而已。TabStrip 僅僅在表單內劃出一塊區域，供您定義頁籤，顯示分類資料。如果您在 TabStrip 的工作區內加上一個控制項，新增的控制項不是加在 TabStrip 中，而是加在包含該 TabStrip 的表單之中。


使用 TextBox 的秘訣
使用 TextBox 的提示

TextBox 是一個相當有彈性的控制項，它的主要屬性有：Text，MultiLine，WordWrap，及 AutoSize 等。

Text 屬性值即為文字方塊所含的文字內容。

MultiLine 屬性值決定這個 TextBox 是可以顯示多行文字，或者只能顯示單行文字。一行文字的結束地方都會有換行字元的存在，下一行文字便從換行字元之後開始。如果 MultiLine 的值為 False， 即不允許多行顯示，則只有第一行的文字會被顯示出來，其餘的文字將被隱藏起來。

WordWrap 屬性值決定 TextBox 是否將過長文字轉折入下一行個顯示行。什麼叫過長文字﹖如果一行文字的寬度會超過文字方塊本身的寬度，這一行文字便是過長文字。

如果不使用 WordWrap 功能，TextBox 只會在碰到換行字元時，自動由下一個顯示行開始顯示新一行的文字。也就是說，如果關閉 WordWrap 功能，文字方塊的內容可能無法全部顯示出來，因為每一行文字之中，超出 TextBox 寬度的文字部份都不會顯示出來。另，WordWrap 功能只有在 MultiLine 屬性值為 True 時才有作用。

AutoSize 屬性值決定 TextBox 是否會跟據文字內容自動調整顯示區的大小，以使所有的文字都能顯示出來。當 AutoSize 功能啟動時，TextBox 會隨著文字行的長度及顯示的字型大小來改變其寬度。使得所有的文字都能顯示出來。

AutoSize 功能對下列狀況幫助最大：

•	顯示標題（單行或多行）。

•	顯示單行 TextBox 的內容。

•	顯示多行唯讀文字（即不允許使用者更改的訊息文字）。

附註  如果 TextBox 沒有任何文字，且 MultiLine 及 WordWrap 功能均已開啟，此時最好不要開啟 AutoSize 功能。因為如此一來 TextBox 的寬度會變成只有一個字元寬，使用者輸入的文字會變得不易閱讀。


建立一個標準的 ListBox

1	在屬性視窗中，選擇 ListStyle 屬性。

2	點選代表下拉選單的箭號，此時會出現屬性值的清單。

3	在清單中選擇 Plain 選項。


建立一個有 OptionButton 選項按鈕或 CheckBox 的清單方塊
建立一個有 OptionButton 或 CheckBox 的清單方塊

1	在屬性視窗中，選擇 ListtSyle 屬性。

2	點選代表下拉選單的箭號，此時會出現屬性值的清單。

3	在清單中選擇 Option 選項。

當 ListStyle 屬性值設成 Option 時，MultiSelect 屬性值便決定了清單方塊是含有選項按鈕亦或是核取方塊。若 MultiSelect 屬性值是 Single﹐選項按鈕會出現，表示只允許單選。若 MultiSelect 屬性值是 Multi 或 Extended﹐則出現核取方塊﹐表示允許複選。


ListBox 的選擇模式

ListBox 有兩種不同的選擇模式可供選擇。不同的模式提供使用者不同的方式來選擇清單中的項目。

如果模式是 Plain，清單中的每個項目都獨佔一行﹔反白行代表使用者選擇了該行中的項目。

如果選擇模式是 Option，每一行的開頭就會出現一個選項按鈕或是核取方塊。在這種情形下，使用者用點取選項按鈕或核取方塊的方式來選擇清單中的項目。選項按鈕或是核取方塊會出現在每一行的開頭，則決定於 MultiSelect 屬性，當 MultiSelect 屬性值為 True 時，出現核取方塊，表示允許多重選擇﹔若 MultiSelect 屬性值為 False，則出現選項按鈕，表示只能單選。


DataObject 和 Clipboard 的差別何在﹖

DataObject 與剪貼簿都可以讓使用者將資料從一個地方搬移或複製到另一個地方。而對程式發展人員來說，在使用時必需記住以下重點：

•	不管使用 DataObject 或剪貼簿，都可以同時將不同資料格式的資料放進 DataObject 或剪貼簿中，但相同格式的資料只能有一份存在。也就是說，如果放入一段文字資料進 DataObject 或剪貼簿中，則先前存在裏面的文字資料將會不見，只有新放入的文字資料會被保留。其它格式的資料也是同樣的狀況。

•	剪貼簿可以保存文字與圖形資料，但目前 DataObject 只能保存文字資料。

•	DataObject 只有在程式執行期間存在，程式關閉後就跟著消失了。但剪貼簿將會跟著視窗作業系統一起存在，只要不關機，剪貼簿就一直可用。也就是說，存放在剪貼簿中的資料不會因為您的程式結束而消失，但存在 DataObject 裏的資料卻會因為應用程式的結束而跟著一起消失。

•	DataObject 是一標準的 OLE 物件，但剪貼簿並不是。 換句話說，剪貼簿有支援標準的資料移動方式（複製，剪下及貼上），但不支援拖放方式。如果程式想要支援拖放，則必需使用 DataObject。

秘訣   程式發展人員可以將自己的資料定義一個和標準格式不同的格式名稱，如此在使用剪貼簿或是 DataObject 來移動資料時便可以和其它程式的資料區隔開來。


顯示或隱藏工具箱

在 [檢視] 功能表中，有一個 [工具箱] 指令，如果這個指令的前面有一個核取記號，則工具箱會顯示出來。若無，則工具箱是隱藏的。

所以，

•	如果要讓工具箱顯示出來，先確定 [工具箱] 指令前面是否有核取記號，如果沒有，選擇 [工具箱] 指令來讓工具箱顯示出來。

•	若要讓工具箱隱藏起來，先確定 [工具箱] 指令前面沒有核取記號，如果有，選擇 [工具箱] 指令來讓工具箱隱藏起來。


什麼是工具箱﹖﹖
什麼是工具箱﹖

工具箱裏收集了各種控制項，使用者可以將這些控制項加入表單、Frame，或 Page。

您可以將工具箱內的控制項依自己的喜好增加或刪減，例如：

•	在工具箱內加入工具頁。

•	利用工具箱來將控制項從一頁移動到另一頁。

•	改變工具頁的名稱。

•	在工具箱內加入其它控制項，如 ActiveX 控制項。

•	從表單上複製自訂的控制項到工具箱中。

例如，OK 和 Cancel 按鈕是利用 CommandButton 作出來的特定控制項，如果將 OK 及 Cancel 按鈕加到工具箱中，便可以很快地將這些控制項加入其它表單中。


加入一個自訂的控制項到工具箱

1	在表單中放入一個控制項，並將該控制項依特定的需求設定其屬性值。

例如，假設要建立一個 [確定] 按鈕，首先在表單上放置一個 CommandButton，將 Caption 屬性值設定成 [確定]，並將 Default 屬性值設成 True。

3	選擇該設定好的控制項。

4	將該控制項拖放至工具箱中。

附註   當您將一控制項拖放至工具箱中時，只有該控制項的屬性值跟著複製到工具箱中，而之前針對該控制項所寫的程式碼都不會跟著複製過去。您可以針對工具箱中的控制項重寫新的程式碼，或另外將先前的程式碼複製到工具箱的控制項中。


加入一個控制項到表單中

下列方法中，您可以任選其一來將工具箱裏的控制項加到表單中。您也可以用同樣的方法來將控制項加到表單內的 Frame、TabStrip，或 MultiPage 裏面。

•	點選工具箱上欲加入表單內的控制項，再到表單上按一下滑鼠左鍵。該控制項會以預設的大小出現在表單上。您可以使用拖拉的方法來改變控制項的大小。

•	將欲加入的控制項由工具箱中拖放至表單中。該控制項會以預設的大小出現在表單上。

•	在工具箱中找到欲加入的控制項，在該控制項的圖示上連續按滑鼠左鍵兩下，然後在表單上每按一次滑鼠左鍵﹐便出現一個該控制項。舉例來說：如果您想要加入四個指令按鈕，先在工具箱上 CommandButton 的圖示上連續按滑鼠左鍵兩下，然後在表單上分別按滑鼠左鍵四次即可。


加入一個控制項到工具箱中

1	在工具箱的任何一個圖示上，或工具箱的空白處，按下滑鼠右鍵。

2	在快顯功能表裏選擇 [新增控制項]。

3	在 Available Controls 清單中選擇要加入工具箱的控制項。

4	按下 [確定] 按鈕。


刪除工具箱中的項目

1	將滑鼠移到工具箱中要刪除掉的控制項的圖示上，按下滑鼠右鍵。

2	在快顯功能表裏選擇 [刪除] 選項。此時 [刪除] 選項文字中會包含步驟 1 中選定的控制項的名稱。

附註   如果要一次刪除工具箱內多個控制項，可以利用快顯功能表內的 [新增控制項]，只要將要刪除的控制項前的核取記號取消掉，即可將這些控制項從工具箱中刪除。


自訂工具箱圖示

1	將滑鼠移到工具箱上欲修訂的圖示上，按下滑鼠右鍵。

2	在快顯功能表裏選擇 [自訂]。

3	接下來可以做以下的事：

•	若要改變工具提示，請輸入新的工具提示。

•	若要編輯圖示，選擇 [編輯圖片] 選項，然後便可依喜好改變圖示中的部份。

•	若要改變成另一個圖示，選擇 [載入圖片] 選項，然後選出新圖示的檔案即可。如果選擇新的圖形檔的圖形大於圖示的大小，會產生錯誤。


什麼是工具提示﹖

當您把滑鼠停在某個控制項上方不動，也不要按任何滑鼠鈕，一會兒之後就會出現一段關於這個控制項的簡短說明文字，這便是工具提示。控制項及工具箱的工具提示都可以依使用者的喜好更改。

當一個控制項從表單複製到工具箱中時，預設的工具提示是 [New + 控制項的型態] 舉例來說，對一個特定的指令按鈕（如 [確定] 按鈕）而言，預設的工具提示是 [New CommandButton]。 如果某個控制項並未有直接或間接設定任何工具提示，[Unknown] 便是其預設值。

附註   工具提示的訊息只有在設計階段才會出現，是專給設計員看的訊息。至於給使用者看的訊息則稱為控制項提示，是由各個控制項的 ControlTipText 屬性所決定的。設計者將要給使用者看的控制項提示設定成 ControlTipText 屬性，當程式執行時，便是使用者看到的提示訊息了。


自訂工具箱的工具提示

1	選擇工具箱中的控制項。

2	按下滑鼠右鍵。

3	在快顯功能表裏選擇 [自訂] 選項。此時您應該會看到 [自訂] 選項文字中會包含步驟 1 中選定的控制項名稱，如 [自訂 Label]。

4	輸入新的工具提示文字。

5	按下 [確定] 按鈕。


設定工具頁的工具提示

1	選擇工具箱中要設定工具提示的工具頁。

2	按下滑鼠右鍵。

3	在快顯功能表裏選擇 [重新命名]。

4	輸入新的工具提示文字。

5	按下 [確定] 按鈕。


改變工具頁名稱

1	選擇工具箱中要改變名稱的工具頁，按下滑鼠右鍵。

2	在快顯功能表裏選擇 [重新命名]。

3	在標題欄位裏輸入新的名稱。

4	按下 [確定] 按鈕。


改變工具箱頁次序
改變工具頁次序

1	在工具箱中的任何一工具頁上按下滑鼠右鍵。

2	在快顯功能表裏選擇 [移動]。

3	選擇欲移動（即要改變次序）的工具頁。

4	將該工具頁移到適當的位置。

5	按下 [確定] 按鈕。


在工具箱中建立新的工具頁

1	在工具箱上任何一工具頁的頁籤上按下滑鼠右鍵，新的工具頁會加在這個工具頁的後面。

2	選擇 [新增工具頁]。


刪除工具箱中的一個工具頁

1	選擇欲刪除的工具頁，按下滑鼠右鍵。

2	選擇 [刪除工具頁]。該工具頁內的所有控制項也將一併刪除。


匯入或匯出工具頁

1	在工具箱中任何一工具頁的頁籤上按下滑鼠右鍵。如果選擇匯入一頁，新的工具頁會加在選擇頁的後面。

2	接下來動作如下：

•	若要匯入一頁，請選擇 [匯入工具頁]，再選擇欲匯入的工具頁的檔案即可。

•	若要匯出一頁，請選擇 [匯出工具頁]，然後輸入一個檔名，在步驟 1  選定的工具頁的內容會複製到該檔案中。匯出一頁並不會將該頁從工具箱中刪除，而只是將該頁的內容複製到檔案中而已。

1	按下 [確定] 按鈕。


移動某工具頁的項目到另一工具頁

1	在工具箱的任何一工具頁中選擇欲移走的控制項。

2	將該控制項拖拉至目的頁的 Tab 上，不要放開滑鼠，等一會兒目的頁會顯示出來。

3	待目的頁顯示出來後，再將該控制項拖放至目的頁的顯示區中。

附註   如果工具箱的顯示區不夠大，目的頁在顯示區之外，可以先把工具箱的寬度調寬，讓所有的 Tab 都能顯示出來，再將控制項拖放至目的頁上。


改變工具箱的大小

1	將滑鼠游標移動到工具箱的邊緣或角落上，滑鼠游標會改變成雙向箭號。

2	當看到雙向箭號出現時，按下滑鼠左鍵開使拖拉，工具箱的大小就會隨著更改。


指定說明主題給某個控制項

這段說明文字假定讀者已經寫好說明檔並且已經將該說明檔指定給程式專案。至於如何將說明檔指定給程式專案則視專案環境而定。

1	選擇欲指定說明主題的控制項，其說明檔必需事先編寫完成。

2	在屬性視窗裏，選擇 HelpContextID 屬性。

3	輸入說明主題代碼。


自訂說明檔

應用程式撰寫員可以使用自訂說明檔來提供使用者該應用程式的操作方法或其它相關資訊。

要製作一個自訂說明檔，必需使用可以產生視窗說明檔的工具。

您可以指定一個說明給每一個同類的控制項。如此使用者在使用您的應用程式時，只要選擇了任何一個該類的控制項，然後按下 F1 鍵，就可以閱讀您針對該類控制項所編寫的說明主題。


指定快速鍵

1	在設計模式中，選擇表單內欲指定快速鍵的控制項。

2	在屬性視窗中，選擇 Accelerator 屬性。

3	輸入一個單一字母，此字母便是該控制項的快速鍵。

秘訣   建議使用控制項的標題內的其中一個字母當快速鍵，這個標題內的字母顯示出來時會加上底線以供識別。


指定快速鍵給 Page 或 Tab

1	在設計模式中，選擇欲指定快速鍵的 Page 或 Tab（頁籤）。要注意您所選擇到的是 Page 或 Tab ，而不是其所屬的活頁控制項或分頁控制項。當您正確地選擇到 Page 或 Tab 時，會有一個方框圍住該 Page 或 Tab 的標題。

2	在選定的 Page 或 Tab 上按下滑鼠右鍵。

3	在快顯功能表裏選擇 [重新命名]。

4	在對話方塊中的 [快速鍵] 欄位中輸入單一個字母。

秘訣   建議使用 Page 或 Tab 的標題內的其中一個字母當快速鍵，這個標題內的字母顯示出來時會加上底線以供識別。


指定 ControlTip 給 Page 或 Tab

1	選擇一個 Page 或 Tab。

要注意您所選擇到的是 Page 或 Tab ，而不是其所屬的 MultiPage 或 TabScrip。當您正確地選擇到 Page 或 Tab 時，會有一個方框圍住該 Page 或 Tab 的標題。

2	在選定的 Page 或 Tab 上按下滑鼠右鍵。

3	在快顯功能表裏選擇 [重新命名]。

4	在 ControlTipText 欄位中輸入控制項提示文字。

5	按下 [確定] 按鈕。

秘訣   若要指定控制項提示給 MultiPage 或 TabScrip，請將提示文字設定給 ControlTipText 屬性。


指定 ControlTip 給控制項

1	選擇欲指定提示的控制項。

2	在屬性視窗中選擇 ControlTip Text 屬性。

您也可以在程式碼中來給定 ControlTipText 的屬性值。

3	輸入控制項提示文字。

秘訣   若要指定控制項提示給 Page 或 Tab，請從該 Page 或 Tab 的快顯功能表上選取 [重新命名] 指令。


什麼是控制項提示﹖

控制項提示是一段簡短的說明文字，通常只有數個字。當使用者將滑鼠游標停留在某個控制項﹑ Page 或是 Tab 之上一小段時間且沒有按下任何按鍵時，這段說明文字便會出現。控制項提示和工具提示非常類似，只有一點不同，即工具提示是由 Microsoft Forms 提供給程式設計員看的，只有在設計階段才會出現﹔而控制項提示是程式設計員提供給使用者看的，是只在執行階段出現的。

如果您指定了控制項提示給 MultiPage 或 TabScrip，則這些 MultiPage 或 TabScrip 裏的 Page 或 Tab 的提示就不會顯示出來。


指定標題

若要指定標題給 CheckBox，CommandButton，Frame，Label，OptionButton，或 ToggleButton，請依下列步驟：

1	點選欲指定標題的控制項，此時屬性視窗會顯示出來。

2	在屬性視窗中選擇 Caption 屬性。

3	輸入新的標題文字。

若要指定標題給 Page 或 Tab ，請依下列步驟：

1	先選定欲指定標題的 Page 或 Tab 所屬的 MultiPage 或 TabScrip。

2	選擇欲指定標題的 Page 或 Tab。當選擇 Page 或 Tab 時，會出現一方框圍住其標題。

3	在 MultiPage 或 TabScrip 的顯示區按下滑鼠右鍵。

4	在快顯功能表裏選擇 [重新命名]。

5	在 Caption欄位內輸入新的標題。

6	按下 [確定] 按鈕。


什麼是標題﹖

標題（caption）是出現在控制項上端或旁邊的說明文字。然並非所有控制項皆能顯示標題，下列控制項都可以顯示標題： CheckBox，CommandButton，Frame（框架），Label，OptionButton，或 ToggleButton。MultiPage 或 TabScrip 內的 Page 或 Tab 亦可顯示標題。


用定位順序對話方塊來改變定位順序

1	先確定沒有任何一個控制項是處在選擇的狀態。

2	在表單顯示區內（不是在控制項上）按下滑鼠右鍵。

3	在快顯功能表裏選擇 [定位順序]。

4	選擇要改變定位順序的控制項。

5	選擇上下箭號直到該控制項的定位順序如您所願為止。


使用 TabIndex 屬性來指定定位順序

1	首先決定好整個表單中所有控制項的定位順序。

定位順序是由 0 開始起算，也就是說，排在第一位的控制項，其定位順序為 0，第二個為 1，其餘類推。

3	按照定好的順序選擇控制項，從第一個開始。

4	在屬性視窗中選擇 TabIndex 屬性。

5	輸入事先決定好的定位順序。

6	選擇下一個控制項，重複步驟 3 到 5，直到輸入完畢為止。


改變 MultiPage 或 TabScrip 中 pages 的次序
改變 MultiPage 或 TabScrip 中頁籤的次序

1	在 MultiPage 或 TabScrip 中選擇欲改變次序的頁籤。

2	在該頁的標題上按下滑鼠右鍵。

3	在快顯功能表裏選擇 [移動]。

4	在 [移動] 對話方塊中，選擇欲改變次序的 Page。

5	選擇上下箭號來改變該頁的順序。

6	次序改變好後，按下 [確定] 按鈕。

附註   改變頁的次序的另一個方法，是在屬性視窗中直接設定該頁的 Index（索引）屬性值。第一頁的索引值是 0，第二頁是 1，其餘類推。


改變表單的大小

若在設計階段：

•	直接拖拉表單的調整控點直到其大小符合所需為止。

若在執行階段：

•	改變表單的 Height 與 Width 屬性值便可改變表單的大小。


改變表單的位置

利用視窗系統的使用者介面：

•	拖拉表單的標題列至所需的位置再放開滑鼠鍵即可。

若在設計階段，有另一個方法供選擇：

•	改變表單的 Left 與 Top 屬性值便可改變表單的位置。這兩個屬性值可以在屬性視窗中更改，也可以在程式碼中更改。


幾個保護機密性資料的方法

許多應用程式會針對不同使用者提供不同機密等級的資料。以下提供幾個在 Microsoft Forms 底下保護機密性資料的方法供設計員參考：

•	在程式碼中判別使用者的權限，依其權限來決定包含機密資料的控制項要顯示或隱藏。控制項的 Visible 屬性值決定了控制項顯示與否。若要閱讀 Visible 屬性的解說，請按下 [image] 。

•	在程式碼中判別使用者的權限，若使用者權限不夠，可將包含機密資料的控制項的前景色和背景色設成一樣的顏色，如此該控制項雖顯示，但其所包含的機密資料卻隱藏起來了。控制項的 ForeColor 與 BackColor 屬性值決定了控制項的前景色與背景色。 若要閱讀 ForeColor 屬性的解說，請按下 [image] 。若要閱讀 BackColor 的解說，請按下 [image] 。

•	在程式碼中判別使用者的權限，若使用者權限不夠，可將某些控制項設成無法使用。控制項 Enabled 屬性值決定了該控制項是否可以讓使用者使用。若要閱讀 Enabled 屬性的解說，請按下 [image] 。

•	要求使用者在使用程式之前，甚至是使用與機密資料相關的控制項之前，都要輸入密碼。在使用者輸入密碼時可以使用資料預留區以使別人無法從螢幕上窺知密碼內容。控制項的 PasswordChar 屬相值即是預留位置字元。若要閱讀 PasswordChar 屬性的解說，請按下 [image] 。

附註   使用上述方法可以增加應用程式的資料安全性，但不能百分之百保證機密資料一定不會曝光。因為有些方法不能保證不會被破解。


讓控制項隨其所包含的資料多寡自動調整大小

在屬性視窗中，將控制項的 AutoSize 屬性值設定成 True 即可。


改變控制項外觀的方法

Microsoft Forms 針對大部份控制項提供以下幾種屬性值以供程式設計員設計控制項的外觀：

•	ForeColor

•	BackColor, BackStyle

•	BorderColor, BorderStyle

•	SpecialEffect

ForeColor 屬性值決定了控制項的前景色。控制項的標題或內容文字的顏色都是使用前景色，故它們的顏色會隨著前景色的改變而變化。

BackColor 或 BackStyle 屬性值影響的是控制項的背景。所謂背景指的是被控制項的外框包起來，但不包含框線本身的區域。BackColor 屬性值決定了控制項的背景色，而 BackStyle 屬性值則決定控制項的背景是否為透明的。如果您的應用程式有一個主背景圖，且您不希望控制項遮住這個背景圖，此時便可將控制項的背景設成透明的。

BorderColor，BorderStyle，以及 SpecialEffect 等屬性會影響控制項的框線。其中 BorderStyle 和 SpecialEffect 兩個屬性只能使用其中一個，不能同時使用兩個。當您設定其中一個屬性的屬性值時，另一個屬性值會自動清為 None。SpecialEffect 屬性提供數種框線樣式可供使用，但是框線的顏色只能從系統內定色裏選擇其中一種，不能任意調配框線的顏色。BorderStyle 屬性只有一種框線樣式可用，沒有其它選擇，但是框線顏色便沒有限制，您可以調配任何喜愛的顏色，然後指定給 BorderColor 屬性。BorderColor 屬性值決定框線的顏色，但這個屬性必需配合 BorderStyle 屬性一起使用才有效。也就是說，如果使用 SpecialEffect 屬性來設定框線的樣式，BorderStyle 屬性便自動清為 None，且 BorderColor 屬性也沒有作用了。


影像控制項與所包含的圖片

Image 控制項並非圖片本身，正確地說，是影像控制項包含了一個圖片，而這圖片本身則存在某個檔案裏。Image 控制項的屬性可讓程式員設定圖片如何顯示，但不能修改圖片的內容。也就是說，Image 控制項只能顯示圖片，不能修改圖片。

Image 控制項有一個滿不錯的用途，就是拿來作程式的背景。如何作呢﹖只要把 Image 控制項的大小設成和表單一樣大，再把其它的控制項放在 Image 控制項的之上，如此 Image 控制項裏的圖片便成了背景圖了。


控制項內文字的對齊方式

1	在屬性視窗中選擇 TextAlign 屬性。

2	在 TextAlign 屬性值旁邊有一個小箭頭，按下它，會顯示出一個下拉功能表，內含一個清單，為允許的 TextAlign 屬性值。

3	選擇下列之一：

•	Left － 文字靠左對齊。

•	Right － 文字靠右對齊。

•	Center － 文字置於控制項的中間。

ComboBox，Label，及 TextBox 都有 TextAlign 屬性。


顯示或隱藏方格

1	在 [工具] 功能表裏選擇 [選項]。

2	選擇 [一般]頁籤。

3	接著可以如下操作：

•	若要顯示方格，選擇 Show Grid 選項（核取方塊上出現記號）。

•	若要隱藏方格，取消 Show Grid 選項（核取方塊上記號消失）。.

1	按下 [確定] 按鈕。


根據方格點來設定控制項的大小

1	選擇要改變大小的控制項。

2	從 [格式] 功能表中選擇 [調整至最近格線]。

Microsoft Forms 會根據方格點來改變控制項的大小，使得控制項外框的四個角剛好落在四個方格點上。


讓控制項根據所包含的內容自動調整大小

1	選擇欲設定的控制項。

2	從 [格式] 功能表中選擇 [調整至適當大小]。

Microsoft Forms 會自動根據這個控制項所含的內容來調整其大小，如果這個控制項包含一張圖片，則它的大小就剛好是那張圖片的大小﹔如果只包含文字，那麼它的大小就剛好足夠顯示所包含的文字。


將數個控制項設定成一樣大小

1	首先，選擇所有要設成一樣大小的控制項。

2	選定一個主控項

3	從 [格式] 功能表裏選擇 [調整大小]。

4	在相關功能表裏選擇下列其一：

•	Width－所有選擇到的控制項，寬度都和主控項一樣。

•	Height－所有選擇到的控制項，高度都和主控項一樣。

•	Both－所有選擇到的控制項，寬度高度同時都和主控項一樣。


控制項的對齊

1	首先，選擇要對齊的控制項。

2	選定一個主控項

3	從 [格式] 功能表裏選擇 [對齊]。

4	在相關功能表裏選擇下列其一：

•	主控項左緣－所有選到的控制項，左邊界都和主控項的左邊界對齊。

•	主控項中央－所有選到的控制項，中心點都和主控項的中心點對齊，對齊的方法是垂直對齊。也就是說，通過主控項中心點的垂直線也將通過所有選擇到的控制項的中心點。至於水平對齊的中心點對齊法，請參閱以下 [主控項中間] 的說明。

•	主控項右緣－所有選到的控制項，右邊界都和主控項的右邊界對齊。

•	主控項上緣－所有選到的控制項，頂邊都和主控項的頂邊對齊。

•	主控項中間－所有選到的控制項，中心點都和主控項的中心點對齊，對齊的方法是水平對齊。也就是說，通過主控項心點的水平線也將通過所有選擇到的控制項的中心點。至於垂直對齊的中心點對齊法，請參閱先前 [主控項中央] 的說明。

•	主控項下緣－所有選到的控制項，底邊都和主控項的底邊對齊。

•	格線－所有選到的控制項，左上角都對齊到各自最接近的方格點上。這個對齊方式比較特殊，並不是根據主控項的設定來對齊，而是各自對齊到最接進的方格點上。

附註   上述功能表裏的各指令的左邊都有一個小圖案，簡單描述該指令的對齊方式。


調整控制項間的水平及垂直間隔

1	選擇要調整間隔的控制項。

2	在 [格式] 功能表裏選擇 [水平間距] 或 [垂直間距]。

3	從相關功能表裏選擇下列其一：

•	相等－所有選擇到的控制項之間的水平或垂直間隔（視步驟二中的選擇而定）都設成一樣大小。而其間隔大小，是由可顯示控制項區域的大小，以及所有選擇到的控制項的寬與高之間的關係而自動決定的。

•	加大－所有選擇到的控制項，其間隔都增加一個格區。

•	縮小－所有選擇到的控制項，其間隔都減少一個格區。

•	移除－取消所有選擇到的控制項間的間隔。這些控制項會一個挨著一個地排好，中間沒有間隔，但也不會互相重疊。


按鈕的特殊排列方式

1	選擇好要按特殊方式排列的 CommandButton。

2	在 [格式] 功能表裏選擇 [排列按鈕]。

3	從相關功能表裏選擇下列其一：

•	表單底端－將所有選擇到的按鈕，在表單的底部由左到右排成一列，並將這些按鈕的底邊對齊。

•	表單右側－將所有選擇到的按鈕，在表單的右邊由上到下排成一行，並將這些按鈕的右邊界對齊。

排列好這些按鈕之後，可以使用 [格式] 功能表裏的 [水平間距] 或 [垂直間距] 選項來調整這些按鈕間的間隔。

秘訣   在排列這些按鈕之前，最好先將方格的大小設定得小一些再來排列按鈕，這樣會比較容易調整到想要的間隔。而且當按鈕已經排列好後，就不再受方格大小影響，此時就算改變方格大小也不會改變按鈕的位置了。


將控制項放在表單的中間

1	選擇要放在表單中間的控制項或群組。

2	在 [格式] 功能表選擇 [對齊表單中央]。

3	從相關功能表中選擇下列其一：

•	水平方向－水平置中。就是以水平方向來看，控制項是在表單的中間。

•	垂直方向－垂直置中。就是以垂直方向來看，控制項是在表單的中間。


控制項群組與群組操作

如果把表單裏兩個以上的控制項看成一個 [單元]，則此單元便稱為 [群組]。您可以將表單內任何兩個以上的控制項視為一個群組。當您將數個控制項定為一個群組時，便可對這個群組做一些 [群組操作]，或是選擇群組中的某一個控制項。

Microsoft Forms 提供多種群組操作讓程式員利用，以下條列各群組操作的說明：

•	將群組內所有控制項的大小設為一樣。若要閱讀詳細說明，請按下 [image] 。

•	解散群組。若要閱讀詳細說明，請按下 [image] 。

•	顯示群組的快顯功能表，從這個塊顯功能表裏可以很方便地使用群組操作。若要閱讀詳細說明，請按下 [image] 。

•	也可以選擇群組內的某個控制項而不解散整個群組。此時您可以只修改該控制項的屬性值而不影響群組內其它的控制項。若要閱讀詳細說明，請按下 [image] 。


Microsoft Forms 的「透明化」處理
Microsoft Forms 的 [透明化] 處理

Microsoft Forms 支援兩種透明化處理：一為控制項的透明化﹔另一為點陣圖的透明化。

控制項的 BackStyle 屬性決定了該控制項是否為透明的。控制項若是透明的，使用者就可以看見該控制項 [背後] （表單內原本會被這個控制項遮住的地方）的部份內容。當您的程式有很好看的背景圖，且您不希望這個背景圖被控制項遮住太多，就可以把某些遮住背景圖的控制項設成透明的。若要閱讀有關透明控制項的更詳細說明，請按下 [image] 。

Microsoft Forms 裏有多種控制項可以顯示點陣圖，其中有部份的控制項支援透明點陣圖。透明點陣圖是什麼呢﹖如果一個點陣圖的某些背景色是透明的，這個點陣圖便是 [透明點陣圖]。點陣圖的透明與否，無法由控制項的任何屬性來決定﹔而是由點陣圖本身決定的（由其最左下角的點的顏色決定）。Microsoft Forms 目前並未提供編輯透明點陣圖的功能。如果要編輯透明點陣圖，您必需使用有提供此功能的圖形編輯程式。

下列控制項支援透明點陣圖：

•	CheckBox

•	CommandButton

•	Label

•	OptionButton

•	ToggleButton

如果您將一個透明點陣圖放在一個不支援透明點陣圖的控制項中，圖形仍然會正確顯示出來，但不能看到圖形背後的內容。下列控制項不支援透明點陣圖：

•	UserForm

•	Frame

•	Image

•	MultiPage


什麼是快顯功能表
什麼是快顯功能表﹖

當您在 Microsoft Forms 裏的某些物件上按下滑鼠右鍵，會在滑鼠由標旁出現一個功能表，此便是快顯功能表。下列物件有提供快顯功能表：

•	功具箱，工具箱中的每一頁，以及每頁中的每一個項目。

•	表單上的控制項。

•	控制項群組（用 [建立群組] 指令所建立起來的群組）。

•	收納器（如 UserForm）。

•	MultiPage 裏的 Page 物件。

•	TabStrip 裏的 Tab 物件。

•	數個位建立群組關係的控制項。

快顯功能表裏的指令目會因您所選的物件而異。例如，如果您選擇數個未建立群組關係的控制項來顯示其快顯功能表，功能表內的指令目將會包含 [建立群組] 指令﹔但工具箱的快顯功能表裏就不會包含這個指令。

若要顯示某個控制項或收納器的快顯功能表，只需將滑鼠游標移到該物件上，按下右鍵即可。

若要閱讀關於如何顯示 MultiPage 或 Page 的快顯功能表的詳細說明，請按下 [image] 。

若要閱讀關於如何顯示 TabStrip 或 Tab 的快顯功能表的詳細說明，請按下 [image] 。


將資料放入 ListBox 或 ComboBox 之中的方法

如果 ListBox 或 ComboBox 只有一個資料行，AddItem 方法是將單一資料項加入清單中的一個很好用的方法。如果是多個資料行的 ListBox 或 ComboBox，則使用 List 及 Column 屬性來增加清單中的資料項會比較有效率﹔您甚至可以從一個二維陣列中直接將資料加入清單中。


多個資料行的 ListBox 及 ComboBox

若要設定多個資料行的 ListBox 或 ComboBox 的行寬，可以設定 ColumnWidths 屬性。如果把某個資料行的寬度設成 0，則該行便隱藏起來（不會消除資料，只是不顯示出來）。

如果只要顯示一個資料行，而其它資料行都要隱藏起來的話，可以將要顯示出來的資料行的行號設定給 TextColumn 屬性。

同樣地，您也可以決定當使用者在做選擇的時後，要給使用者那一個資料行的資料，只需把那一行的行號設定給 BoundColumn 屬性即可。


使用 List 或 Column 屬性來將資料項加入 ListBox 或 ComboBox 的清單中

1	首先，建立一個具有多個資料行的 ListBox 或 ComboBox。

2	其次，建立一個二維陣列，陣列內包含要加入清單中的資料項。

3	將 ListBox 或 ComboBox 的 ColumnCount 屬性值設定成清單中資料項的總數。

4	選擇下列方法之一來完成：

•	將陣列設定給 List 屬性（即讓 List 屬性值等於該陣列）。如此 ListBox 的內容便和陣列的內容完全一致。

•	將陣列設定給 Column 屬性（即讓 Column 屬性值等於該陣列）。Column 屬性會將行與列的順序改變，也就是說，ListBox 的列會對應到陣列的行。


顯示或隱藏工具提示

1	在 [工具] 功能表裏選擇 [選項]。

2	選擇 [一般] 頁籤。

3	接著視情況做下列操作：

•	若要顯示工具提示，選取 [顯示工具提示] 選項（核取方塊上出現記號）。

•	若要隱藏工具提示，取消 [顯示工具提示] 選項（核取方塊上沒有記號）。


Microsoft Forms 裏的物件模型

Microsoft Forms 裏的物件模型包含下列型態的物件：

•	控制項

•	集合物件

•	物件（含於集合物件中的物件）

 Microsoft Forms 裏的物件模型的每一個元件都有其屬性、事件、及方法，您可以善加利用，以使程式依您的意思來完成工作。

Microsoft Forms 有三種集合：

Controls 集合－包含表單內所有的控制項、Frame，及 Page。

Pages 集合－包含一個 MultiPage 裏所有的 Page 物件。每一個 MultiPage 都有它自己專屬的 Pages 集合。

Tabs 集合－包含一個 TabStrip 裏的所有 Tab 物件。每一個 TabStrip 都有它自己專屬的 Tabs 集合。


建立選項群組的方法

在預設的情況下，一個收納器（如表單，MultiPage，或 Frame）裏所有的 OptionButton（選項按鈕）控制項都屬於同一個選項群組。當使用者選擇了其中一個選項按鈕時，同一選項群組中其餘的按鈕會自動清除成 False（未選擇）的狀態。也就是說，一個選項群組只允許單選其中的一個選項。

請注意現在這段文字討論的主題是 OptionButton（選項按鈕），而非 CheckBox（核取方塊）。核取方塊在預設情況下便是允許多重選擇的。

如果您希望提供多重選擇的選項按鈕，您必需建立多個選項群組。建立選項群組的方法有二：

•	使用 GroupName 屬性來將相關的選項按鈕設成同一選項群組。

•	將相的選項按鈕放在一個 Frame（框架）之中，則它們自成一個選項群組。不同的選項群組放在不同框架中。

第一個方法比較受推薦，原因是第二個方法需要額外的控制項（框架），而第一個方法則不需要。使用較少的控制項，可以減少程式佔用硬碟的空間，也可以提升程式的執行效率。

附註   TabStrip不是一個收納器，所以在 TabStrip 裏的選項按鈕是屬於表單裏的選項群組，而非自成一個群組。當然您可以使用選項按鈕的 GroupName 屬性（上述第一種方法）來建立 TabStrip 專屬的選項群組。


使用 GroupName 屬性來建立一個選項群組

1	將程式所需的選項按鈕控制項都放在表單上。請注意，在 MultiPage 或 Frame 內的選項按鈕會自成一個選項群組（因 MultiPage 及 Frame 均為收納器），不屬於表單的選項群組。

2	將選項按鈕分類，每一類定義成一個選項群組，並將所有選項按鈕歸類。

3	幫每個選項按紐取個名字，並將名字輸入到各按鈕的 Name 屬性。

4	再將各按鈕所屬的選項群組名稱輸入到各按鈕的 GroupName 屬性裏（同一選項群組裏的選項按鈕，其 GroupName 屬性必需設成同樣的名字）。


清單資料項的輸入比對

當使用者輸入文字或按下鍵盤按鍵時，ListBox 或 ComboBox 會立刻在其清單中尋找符合目前輸入文字或按鍵的資料項，這個動作稱為輸入比對。Microsoft Forms 提供三種輸入比對模式：

•	不比對－不做輸入比對。

•	第一個字母－開頭字母比對。將最近一次的鍵盤按鍵拿來和清單資料項的第一個字母做比對，並選取第一個符合的資料項。

•	完全－全部比對。將使用者目前所輸入文字全部拿來和清單裏的資料項做比對，並試圖找出完全符合的資料項。

在全部比對模式時，輸入比對的動作每隔兩秒鐘會重新做一次（遠東區版本則為六秒鐘）。舉例來說，如果您有一個內容為美國五十洲名的清單，當您很快地輸入 [CO] 兩個字母時，輸入比對的結果會是 [Colorado]。但如果您輸入 [C] [O] 兩個字母時輸入得太慢（兩字母中間時間超過兩秒或六秒），比對的結果會變成 [Ohio]，因為比對動作重新來過，字母 [C] 被遺忘，字母 [O] 被拿來當作開頭字母做比對。

如果使用 [全部比對] 模式，最好先將清單內的資料依字母順序排好，（可以利用 TextColumn 屬性來達成這個目的）。如果資料沒有先照字母順序排好，比對的結果可能不完全正確。舉例來說，如果清單中依序包含 [Alabama]，[Louisiana]，以及 [Alaska]，則當使用者輸入字母 [ala] 時，比對結果只會找到 [Alabama]，而找不到 [Alaska]，但其實兩個項目都應該是符合 [ala] 開頭的結果才對。如果資料依照字母順序排序過，就不會有這種不完全正確的結果。


使用 z-order 方法來安排控制項的顯示順序

直接將控制項移到疊置順序的最前面或最後面：

1	選擇要移動疊置順序的控制項。

2	在 [格式] 功能表中選擇 [順序] 指令。

3	從相關功能表裏選擇 [移至頂層] 或 [移至底層]。

將控制項的疊置順序移動一個位置：

1	選擇要移動疊置順序的控制項。

2	在 [格式] 功能表中選擇 [順序] 指令。

3	從相關功能表裏選擇 [移至頂層]（往前挪）或 [移至底層]（往後挪）。

附註   改變顯示層的指令（如 [移至頂層] 或 [移至底層] 等）不能復原或重複。舉例來說，如果您選擇了某個物件，並且對該物件使用了 [移至底層] 指令，您不能使用 [復原] 指令來恢復該物件的疊置順序，您也不能使用 [重做] 指令來將該物件繼續往後挪。如果要恢復該物件的疊置順序，您必需改下 [移至頂層] 指令來將物件挪回先前的位置﹔如果要將該物件繼續往後挪，必需重複下達 [移至底層] 指令直到該物件到達適當的位置為止。


建立透明的控制項

1	將控制項放到表單中。

2	查看控制項的屬性值。

3	將 BackStyle 屬性設成 Transparent。

4	如果控制項有支援 BorderStyle 屬性，將其設為None。

附註   當控制項被設成透明後，控制項的背景色就不會顯示出來，也就是 BackColor 屬性值會被忽略。不過，BackColor 屬性值並不會改變，只是被忽略而已。


取消控制項裏的點陣圖

選擇要取消圖片的控制項：

1	在屬性視窗中找到 Picture 屬性。當控制項有包含圖片時，Picture 屬性值應該是 [bitmap]，將 [bitmap] 整個字選擇起來（整個字會呈反白）。

2	按下 DELETE 鍵。

或者，在程式碼中也可取消控制項的圖片：

•	使用這個陳述式：Object.Picture = LoadPicture("")


在控制項中載入點陣圖

選擇要載入圖片的控制項：

1	在屬性視窗中找到 Picture 屬性。

2	在 Picture 對話方塊中輸入圖片的檔名（包含路徑）。

如果圖片大於控制項的大小，Microsoft Forms 會將調整圖片的大小以適合控制項的尺寸，不論圖片是以何種方式載入控制項的（在屬性視窗中指定或由程式碼載入）。控制項的 PictureAlignment 屬性則可以改變圖片在控制項裏的置放方式。


圖片在控制項裏的置放方式

控制項的 Picture 屬性將一個圖片指定給控制項，而圖片在控制項裏有下列置放方式：

•	利用 PictureAlignment 屬性來決定圖片要放在控制項的中央，或是將圖片的某個角落對齊控制項的同一個角落（如圖片的左上角對齊控制項的左上角）。

•	使用 PictureSizeMode 屬性來決定當圖片大小和控制項不相同時，要將圖片裁剪，縮小，或放大來符合控制項的大小。縮小圖片可能會讓圖片扭曲或變形，但放大則不會。

•	使用 PictureTiling 屬性來讓多個圖片放在同一個控制項裏面。


改變方格大小

1	在 [工具] 功能表裏選擇 [選項]。

2	在 [選項] 對話方塊裏選擇 [一般] 那一頁。

3	在 [表單格線設定] 群組裏給定每一個格區的大小。

秘訣   如果您在程式裏使用 [排列按鈕] 指令來安放指令按鈕，建議儘量用小方格，因為這樣指令按鈕才比較容易靠到表單的邊緣。


建立控制項群組

1	將表單內要安排在同一群組的控制項同時選擇起來。

2	在 [格式] 功能表裏選擇 [建立群組] 指令即可。


改變同一群組內所有控制項的大小

1	選擇欲改變大小的群組。

群組的週圍會出現帶有調整控點的方框，表示該群組目前已被選擇。

3	拖拉其中一個調整控點來改變群組外框的大小。

4	待方框大小符合所需後，放開滑鼠按鈕。

群組內每一個控制項的大小，都會按照原來群組外框與後來群組外框的大小比例來調整。


解散控制項群組

1	選擇欲解散的控制項群組。

2	在 [格式] 功能表裏選擇 [解散群組] 即可。


顯示群組的快顯功能表

1	選擇該群組。

2	將滑鼠游標移到群組外框範圍內任何一處，按下滑鼠右鍵即可。

秘訣   當您不需要快顯功能表時，只需將滑鼠游標移到功能表之外，按下滑鼠的任何一個按鍵，快顯功能表便會消失。


選擇群組內的一個控制項

1	首先選擇該控制項所屬的群組。

2	再選擇群組內的單一控制項。此時群組的調整控點顏色會變得稍淡，而被選擇的控制項的調整控點顏色則較深。

您可以修改您所選擇的控制項的所有屬性，而不會影響同一群組內其它的控制項。

3	當您對該控制項完成所要的修改後，只要在控制項以外的群組區域內按下任何一個滑鼠鍵，即取消該控制項的選擇狀態。此時群組仍舊處於被選擇的狀態。

在做完單一控制項的修改後，您可以選擇群組中其它的控制項做修改，或者轉而做其它的事情。


顯示 MultiPage 或 Page 的快顯功能表

1	首先確定是處於設計模式。

2	確定後便可如下操作：

•	若要顯示個別 Page（頁籤）的快顯功能表，只需在該頁籤的標題上按下滑鼠右鍵即可。

•	若要顯示整個 MultiPage（活頁控制項）的快顯功能表，則在活頁控制項的區域內，任何一個 Page 標題以外的地方，按下滑鼠右鍵即得。


顯示 TabStrip 或 Tab 的快顯功能表

1	首先確定是處於設計模式。

2	確定後便可如下操作：

•	若要顯示個別 Tab（頁籤）的快顯功能表，先選擇該頁籤。

頁籤被選擇後會出現一個虛線外框圍住其標題

然後在其標題上按下滑鼠右鍵。

•	若要顯示 TabStrip（分頁控制項）的快顯功能表，則在分頁控制項的區域內，任何一個 Tab 標題以外的地方，按下滑鼠右鍵即得。


使用中的控制項及被選取控制項

所有的控制項都有兩種狀態：使用中（active）及被選取（selected）。當控制項處於使用中的狀態時，就是指使用者正在處理該控制項的內容。當控制項處於被選取的狀態時，是指使用者正在對控制項作某些操作，而並不在處理該控制項的內容。

在設計階段，當您把一個控制項加到表單中時，大部份的控制項會自動處於被選取的狀態，您可以看到調整控點圍繞在該控制項周圍，代表現在是設計階段，且該控制項處於被選取的狀態。若要使一個不處於被選取狀態的控制項重新處於被選取狀態，只需將滑鼠移到該控制項的地方，按一下左鍵即可。

如果您在一個已經處於被選取狀態的控制項上按下滑鼠左鍵，則該控制項便處於使用中。此時您可以直接修改該控制項的標題。

不論控制項是處於 [被選取] 或是 [使用中] 的狀態，您都可以利用 DEL，CTRL+X，及 CTRL+C 等快速鍵的功能，來做到刪除，剪下，及複製等動作。如果控制項是處於被選取的狀態，則上述指令也可在快顯功能表裏找到，且這些動作是針對控制項本身，而不是針對控制項的內容。但若控制項是處於使用中的狀態，則上述指令不會出現在快顯功能表中，且這些動作是針對控制項內的選取文字，而非針對控制項本身。如果此時控制項內容並沒有任何選取文字，則上述動作一概無效。


一次選取多個控制項的方法

下列三個方法可以讓您一次選取多個控制項：

•	SHIFT+CLICK：Microsoft Forms 會產生一個隱形的選取方框包圍住您所選取的控制項，並將調整控點顯示在方框內所有控制項的周圍。

•	CTRL+CLICK：這個方法和上一個方法類似，不同的是調整控點只會出現在被選取的控制項周圍，而不是出現在選取方框內所有的控制項的周圍。有些時後這個方法無法正確分辨靠得很近的控制項，以致於選取結果可能有錯。如果發生這種情形，請使用第三種方法（Select Objects 指標）。

•	工具箱裏的 Select Objects 指標：畫一個選取方框，將所有要選取的控制項包在該方框內即可。所有包含於方框內的，或是有碰到方框的控制項都算是被選取到的。

當您選取了多個控制項時，它們之一會成為其它被選取控制項的參考基準，此控制項稱作主控項。


指定主控項的方法

在您用不同方法選取多個控制項之時，指定主控項的方法亦不相同：

•	SHIFT+CLICK：第一個選取的控制項為主控項。

•	CTRL+CLICK：最後一個選取的控制項為主控項。

•	工具箱裏的 Select Objects 指標：當您開使畫選取方框時，最接近滑鼠游標的控制項便是主控項。

如果您在一個控制項上按下 CTRL+CLICK 兩次，則該控制項便成為新的主控項。


Microsoft Forms 裏的「復原」與「重複」
Microsoft Forms 裏的 [復原] 與 [重複]

Microsoft Forms 支援多層的 [復原] 及 [重做] 指令。這意味著您可以復原一連串的動作，而不是只能單單復原上一個動作。

CTRL+Z 是 [復原] 的快速鍵，而 CTRL+Y 則是 [重做] 的快速鍵。

改變控制項顯示層的指令，如 [移至底層] 或 [移至頂層] 等，無法重複或復原。舉例來說，如果您選取了某個控制項，並在快顯功能表內選擇了 [下移一層] 指令來將該控制項往後挪一個顯示層，您無法用 [復原] 指令來讓它恢復到之前的顯示層，也無法用 [重複] 指令來將它再往後挪一個顯示層。


Microsoft Forms 的 ByVal 引用方式

Microsoft Forms 裏的 ByVal 關鍵字通常表示某個引數以傳值的方式傳遞；這也是 Visual Basic 裏 ByVal 的標準意義。不過，在 Microsoft Forms 裏還有另一種用法：您可以將 ByVal 用在 ReturnBoolean，ReturnEffect，ReturnInteger，或 ReturnString 等物件上，這個時後傳遞的值並不代表某個資料型態的資料，而是指到該物件的指標。

當您使用上述物件時，ByVal 作用在該物件上取得該物件的指標，而不是指傳遞參數的方法。上述物件都有 Value 屬性，您可以視需求更改其屬性值。您甚至可以將這個屬性值當引數傳進函數中，或當成函數的傳回值亦可。因為您可以任意更改物件內的資料，所以縱使在函數語法中將參數寫成 ByVal，其結果卻是和 ByRef 一樣的。

對於引數是 ReturnBoolean，ReturnEffect，ReturnInteger，或 ReturnString 等物件的給值方法，和對其它正常引數給值的方法是完全一樣的。舉例來說，如果有一個引數 Cancel 是和 ReturnBoolean 物件相關聯的，您仍然可以使用 Cancel=True 這樣的陳述式來給定其值。


Rename 對話方塊

Rename 對話方塊包含有 Accelerator（快速鍵），Caption（標題），及 ControlTipText（控制項提示文字）等屬性值輸入項，可用來修改個別 page 或 tab 的這些屬性值。也包含了 Caption 及 ToolTipText 屬性值輸入項，可用來修改工具箱的屬性值。

快速鍵是鍵盤上的某個按見鍵。當使用者同時按下 ALT 鍵及該快速鍵時，輸入焦點便切換到相對應的 Page 或 Tab。標題，是指出現在 Page﹑Tab，或工具箱現行頁的 tab 區域裏的文字。ControlTipText 則是一段簡短的說明文字。當使用將滑鼠游標移到某個控制項上停留一會兒，不要按下滑鼠按鍵，便會出現該控制項的 [控制項提示文字]。ToolTipText 也是一段簡短的說明文字。當使用將滑鼠游標移到工具箱現行頁上停留一會兒，不要按下滑鼠按鍵，便會出現 [工具提示文字]。

若要指定 Page 或 Tab 的快速鍵：

•	在 Accelerator 輸入項內輸入單一字母即可。

若要修改 Page 或 Tab 的名稱：

•	Caption 輸入項內輸入新的標題文字即可。

若要定義 Page 或 Tab 的控制項提示文字：

•	在 ControlTipText 輸入項內輸入提示文字即可。

若要定義工具箱現行頁的工具提示文字：

•	ToolTipText 輸入項內輸入提示文字即可。

附註   輸入完畢後，請記得按下 [確定] 按鈕讓所有的修改值生效。


Page Order/Tab Order 對話方塊
頁籤順序對話方塊

改變一個 page 或 tab 的位置，請依下列步驟：

1	選擇欲移動位置的 Page 或 Tab。

2	將該頁籤移到適當的位置。

3	所有的位置都滿意後，按下 [確定] 按鈕。


[新增控制項] 對話方塊

1	在 [新增控制項] 清單中選出所有要加入工具箱的控制項。

2	按下 [確定] 按鈕。

秘訣   您可以指定那些類的控制項可以顯示在 [新增控制項] 清單之中。


[自訂控制項] 對話方塊

這個對話方塊包含有 ControlTipText 屬性，及控制項圖示（在工具箱上代表該控制項的小圖）的輸入項。在這個對話方塊中，您可以定義或修改該控制項的 ControlTipText，也可以更換或修改控制項圖示。

若要定義或修改 ControlTipText：

•	直接在 ControlTipText 的輸入項裏輸入新的值即可。

若要修改圖示：

1	選擇 [編輯圖片] 指令按鈕。

2	使用 [圖片編輯器] 來修改圖示。

若要更換圖示：

1	選擇 [載入圖片] 指令按鈕。

2	從通用型對話方塊中選擇新圖示的圖形檔。

3	按下 [確定] 按鈕。


[新增控制項] 對話方塊

1	在 [控制項清單] 中，選取您要加到工具箱裡的控制項。

2	按下 [確定]。

提示   您可以從 [顯示] 群組中自己過濾 [控制項清單]。


對應鍵

用來快速選取某物件的單一字元。當您同時按下 ALT 和某物件的對應鍵時，即可將駐點轉移到該物件，並引發與物件相關的事件，而所引發的事件則會依物件而有所不同。如果有與事件相關的程式碼，則事件啟動時，程式碼也會跟著執行。有時快速鍵也叫做鍵盤對應鍵、快速鍵、鍵盤快速鍵。


背景顏色

視窗或顯示區的顏色，所有重繪或顯示的動作均在此處發生。


資料連結

指一個內容與某資料來源相關的控制項，如工作表中的儲存格或某個範圍的儲存格。


物件類別識別項 ( CLSID )

用來識別物件的唯一識別項（UUID）。這些 CLSID 都登錄於系統註冊區，以方便其它的應用程式載入該物件，或用來設計程式。


清除

移除一個值或關閉一個設定。


client region
從屬工作區

視窗中應用程式顯示或輸出文字、圖形的部份。


說明代碼

應用程式中對應到特定物件的唯一字串或數值，應用程式可以利用說明代碼連結到對應的線上說明。


控制項群組

一組在概念或邏輯上相關的控制項。而概念相關的控制項會被視為一體，但不一定會相互影響。在邏輯相關的控制項會相互影響設定值，例如在一組選項按鈕中設定某個按紐，也會取消群組中其它按紐。


控制項提示

用來說明控制項、Page 或 Tab 的簡短提示。當使用者把滑鼠指標移到控制項上方而不按下滑鼠鍵時，就會顯示控制項提示。控制項提示和工具提示非常類似，但是 Microsoft Forms 在設計階段中，工具提示是提供給程式開發人員，而控制項提示則是程式開發者在執行階段提供給使用者的。


游標
指標

在應用程式中用來指示目前所在的位置。


循環

以定義好的順序依序移動過一群物件。


資料格式

指一組資料的結構或形式，如：檔案、資料庫中的資料錄、試算表中的儲存格或者是文件中的文字。


資料來源

控制項所連結的資料位置，例如：試算表中的儲存格。資料來源目前的值可以存放在控制項的 Value 屬性中。然而控制項本身並不儲存資料，而只是負責顯示資料來源中的資料。


主控項

使用 [格式] [對齊] 指令及 [調整大小] 指令時，用來參考位置或大小的控制項。當對齊控制項時，選取的控制項會與主控項對齊；當調整控制項大小時，選取的控制項會與主控項大小一致。

而其中白色調整控點代表主控項，而其餘控制項則是黑色調整控點。


放下來源

拖放動作中所拖曳的物件或文字。


前景顏色

是指目前在螢幕上重繪或顯示文字的顏色。在單色螢幕上，前景顏色是指點陣圖或其它圖形的顏色。


grid block
格區

兩個相鄰格點之間的空間。


輸入法
輸入法 ( IME )

將您所輸入的字元轉成 DBCS 語言（如中文，日文）的應用程式。當使用者輸入字元時，IME 會顯示出可能的對應文字，而使用者可選出最適當的項目。


繼承屬性

指繼承到其它物件類別特徵的屬性。


鍵盤狀態

傳回使用者按下那個按鍵，與是否同時按下 SHIFT、CTRL，或 ALT。


>OLE 收納器控制項
OLE 收納器控制項

為 Visual Basic 的控制項之一，可在 Visual Basic 應用程式中，用來連結及嵌入其它應用程式中的物件。


OLE 狀態碼

一個資料結構的錯誤代碼部份，在錯誤產生時，會傳回錯誤狀況的資訊。資料結構是由物件連結及嵌入（OLE）所定義的。


預留位置

您可因為保密的理由，使用某字元來遮住或隱藏其他字元。例如：當使用者在輸入密碼時，輸入密碼字元的位置將出現星號。


屬性表
屬性頁

用來顯示一群屬性的地方。


RGB

用來描述紅（R）、綠（G）、藍（B）等，三種顏色其混色程度的顏色數值系統。其混色程度由一組整數值（R，G，B）來表示，其中每一個整數的範圍都是由 0 到 255。其中，整數數值 0 代表該色完全不出現在混色當中；而整數數值 255 代表該色完全混入在混色當中。


系統顏色

由作業系統所定義的顏色。使用者介面中每個部分都擁有一種顏色，例如：視窗標題或功能表。


目標

使用者拖曳物件後所要放下的地方。


透明性

是指物件的背景為透明的，也就是說我們看不到物件的背景，而是看到物件的背後。例如：用一張影像或圖片來當作為應用程式的背景，此時您可以使用 BackStyle 屬性來使背景變成透明。


非資料連結

若連結控制項與工作表儲存格沒有關聯，則稱之為非資料連結控制項。反之，則資料連結控制項的資料來源為工作表中儲存格；用以作為資料選取、顯示、及編輯等用途。


列舉常數

您可由使用列舉值的屬性、方法或事件之敘述中，找到更多相關的資訊。


AddControl 事件

發生在當控制項被放至表單、Frame，或 MultiPage 的 Page 時。

語法

在框架（Frame）中
Private Sub object_AddControl( )

在活頁（MultiPage）中
Private Sub object_AddControl( index As Long, ctrl As Control)

AddControl 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
index	必要的引數。指要放置控制項之 Page 的索引值。
ctrl	必要的引數。指要加入的控制項。
請注意

AddControl 事件必須發生在執行階段時加入一個控制項，而無法在設計階段引發，也不會在剛載入與顯示表單時引發。

此事件的預設動作是將一個控制項加至某個表單、Frame，或 MultiPage。

使用 Add 方法會引發 AddControl 事件。


AfterUpdate 事件

發生在控制項中的資料經由使用者介面改變後。

語法

Private Sub object_AfterUpdate( )

AfterUpdate 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

AfterUpdate 事件發生在不管控制項是否連結時（也就是，當使用 RowSource 屬性指定一個控制項的資料來源）。此事件是無法取消的。若您想要取消此更新（即復原控制項先前的值），可使用 BeforeUpdate 事件並設定 Cancel 引數為 True。

AfterUpdate 事件發生在 BeforeUpdate 事件之後、目前控制項的 Exit 事件之前，以及下一個定位順序的控制項之 Enter 事件之前

。


BeforeDragOver 事件

發生在進行拖放動作時。

語法

在框架（Frame）中
Private Sub object_BeforeDragOver( ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

在活頁（MultiPage）中
Private Sub object_BeforeDragOver( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

在分頁（TabStrip）中
Private Sub object_BeforeDragOver( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

在其它控制項中
Private Sub object_BeforeDragOver( ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

BeforeDragOver 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。必須為一個物件的名稱。
index	必要的引數。MultiPage 中執行拖放動作之 Page 的索引值。
Cancel	必要的引數。False 表示控制項須處理此事件（預設）。True 表示由應用程式來處理此事件。
ctrl	必要的引數。代表拖曳時掠過的控制項。
Data	必要的引數。代表被拖放的資料。此資料會被封裝在一個DataObject 中。
X, Y	必要的引數。控制項位置的水平與垂直座標。這兩個座標的單位都是點數，X 表示控制項的左邊界；Y 表示控制項的上邊界。
DragState	必要的引數。被拖曳資料的轉移狀態。
Effect	必要的引數。藉由拖曳資源來支援此動作。
Shift	必要的引數。指定 SHIFT、CTRL，及 ALT 的狀態。
設定

DragState 的設定值有：

常數	值	說明
fmDragStateEnter	0	滑鼠指標在目標範圍內。
fmDragStateLeave	1	滑鼠指標在目標範圍外。
fmDragStateOver	2	滑鼠指標雖到達一個新的位置，但仍在目標範圍內。
Effect 的設定值有：

常數	值	說明
fmDropEffectNone	0	不將來源複製或移至拖曳目標。
fmDropEffectCopy	1	將來源複製到拖曳目標。
fmDropEffectMove	2	將來源移到拖曳目標。
fmDropEffectCopyOrMove	3	將來源複製或移到拖曳目標。
Shift 的設定值有：

常數	值	說明
fmShiftMask	1	按下 SHIFT 鍵。
fmCtrlMask	2	按下 CTRL 鍵。
fmAltMask	4	按下 ALT 鍵。
請注意

當滑鼠指標進入、離開或直接停留在目標區時，可以利用此事件來監控之。進行拖放動作的過程中，當使用者移動滑鼠，或按下、放開滑鼠按鈕時，系統便會引發此事件。指標的位置將決定接收此事件的目標物件。您可檢查 DragState 引數以得知指標的狀態。

當一個控制項在處理此事件時，您可使用 Effect 來識別所執行的拖放動作。當 Effect 被設定為 fmDropEffectCopyOrMove 時，您可將 Effect 的值變更為 fmDropEffectNone、fmDropEffectCopy，或 fmDropEffectMove。

當 Effect 被設定為 fmDropEffectMove 時，您可將 Effect 的值變更為 fmDropEffectCopy 或 fmDropEffectNone。

當 Effect 被設定為 fmDropEffectCopy 時，您可將 Effect 的值變更為 fmDropEffectMove 或 fmDropEffectNone。

當 Effect 被設定為 fmDropEffectNone 時，您是無法改變其值的。

當 Cancel 值預設為 False 時，大部份控制項不支援拖曳動作。這是指控制項拒絕任何拖曳動作，並且不會引發 BeforeDropOrPaste 事件。但TextBox 及 ComboBox 這兩個控制項在 Cancel 值設為 False 時，仍接受此拖曳動作。


BeforeDropOrPaste 事件

發生在當使用者將資料拖放或貼至物件上時。

語法

在框架（Frame）中
Private Sub object_BeforeDropOrPaste( ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

在活頁（MultiPage）中
Private Sub object_BeforeDropOrPaste( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

在分頁（TabStrip）中
Private Sub object_BeforeDropOrPaste( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

在其它控制項中
Private Sub object_BeforeDropOrPaste( ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

BeforeDropOrPaste 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。必須為一個物件的名稱。
index	必要的引數。執行拖放動作時，MultiPage 中 Page 的索引值。
Cancel	必要的引數。False 表示控制項須處理此事件（預設）。True 表示由應用程式來處理此事件。
ctrl	必要的引數。目標控制項。
Action	必要的引數。取決於鍵盤的設定，執行拖放動作後將產生的結果。
Data	必要的引數。代表被拖放的資料，此資料被封裝為 DataObject。
X, Y	必要的引數。控制項位置的水平與垂直座標。這兩個座標的單位都是點數，X 表示控制項的左邊界；Y 表示控制項的上邊界。
Effect	必要的引數。拖放至目標控制項所產生的影響。
Shift	必要的引數。指定 SHIFT、CTRL，及 ALT 的狀態。
設定

Action 的設定值有：

常數	值	說明
fmActionPaste	2	將選取的物件貼至目標中。
fmActionDragDrop	3	使用者已將物件由來源拖放至目標。
Effect 的設定值有：

常數	值	說明
fmDropEffectNone	0	不將放下來源複製或移動到目標。
fmDropEffectCopy	1	將來源複製到目標。
fmDropEffectMove	2	將來源移動到目標。
fmDropEffectCopyOrMove	3	將來源複製或移動到目標。
Shift 的設定值有：

常數	值	說明
fmShiftMask	1	按下 SHIFT。
fmCtrlMask	2	按下 CTRL。
fmAltMask	4	按下 ALT。
請注意

對 MultiPage 或 TabStrip 來說，在轉移資料物件到控制項時，Visual Basic 應用程式會引發此事件。

而在其它控制項中，則由系統來引發此事件。

當由控制項來處理此事件時，您可更新 Action 引數來識別拖放動作。當 Effect 被設定為 fmDropEffectCopyOrMove 時，您可指定 Action 為 fmDropEffectNone、fmDropEffectCopy，或 fmDropEffectMove。當 Effect 被設定為 fmDropEffectCopy 或 fmDropEffectMove 時，您可再指定 Action 為 fmDropEffectNone。當 Effect 被設定為fmDropEffectNone 時，您就不能指定 Action。


BeforeUpdate 事件

發生在控制項中的資料有所改變時。

語法

Private Sub object_BeforeUpdate( ByVal Cancel As MSForms.ReturnBoolean)

BeforeUpdate 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Cancel	必要的引數。False 表示控制項須處理此事件（預設），True 表示取消此更新的動作，並由應用程式來處理此事件。
請注意

BeforeUpdate 事件發生在不管控制項是否連結時（也就是，當使用 RowSource 屬性指定一個控制項的資料來源）。此事件發生在控制項的 AfterUpdate 及 Exit 事件之前（及下一個接受駐點控制項的 Enter 事件之前 ）。

若您將 Cancel 引數設為 True，則駐點將仍保持在該控制項上，且 AfterUpdate 事件與 Exit 事件都不會發生。

利用程式來改變控制項中的資料並不會引發此事件。


Change 事件

表示 Value 屬性有所更動。

語法

Private Sub object_Change( )

Change 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
設定

Change 事件發生在當 Value 屬性改變時，不管是否由程式碼的執行或是在介面上使用者操作所造成的。

這裏有些改變 Value 屬性的範例：

•	按下 CheckBox、OptionButton，或ToggleButton。

•	在ComboBox、 ListBox、或 TextBox.中鍵入或選取一個新的文字值。

•	在TabStrip.中選取一不同的頁籤。

•	移動 ScrollBar 中的捲動方塊。

•	按了 SpinButton 中上下箭號。

•	在 MultiPage 中選取另外一頁。

請注意

Change 事件程序可以非同步化或同步化方式來在控制項之間顯示資料。例如，您可利用 ScrollBar 的 Change 事件程序來更新 TextBox 的值。或者您也能利用 Change 事件程序，來顯示兩個工作區中互動的資料。

附註  在一些例子中，Click 事件也可發生在當 Value 屬性改變時。無論如何，在偵測屬性的新值時，使用 Change 事件較偏向技術性。


Click 事件

發生在以下兩個情況之一：

•	使用者用滑鼠來按控制項。

•	在一控制項有超過一個以上的值時，使用者明確地選取某個值。

語法

在活頁（MultiPage）或分頁 （TabStrip）中
Private Sub object_Click( index As Long)

在其他控制項中
Private Sub object_Click( )

Click 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
index	必要的引數。MultiPage 或 TabStrip 連結此事件的頁索引值。
請注意

以這兩個發生 Click 事件的情況來說，第一個情況適用於CommandButton、Frame、Image、Label、ScrollBar及SpinButton。而第二個情況適用於CheckBox、ComboBox、ListBox、MultiPage, TabStrip及ToggleButton。當值改變為 True 時，也適用於 OptionButton。

下列為一些引發 Click 事件的例子：

•	按下表單的一空白區域或在表單中未啟用的控制項（除了清單方塊）。

•	按下 CommandButton 控制項。若指令按鈕已不能擁有駐點，則 Click 事件在 Enter 事件發生之前。

•	當 CommandButton 擁有駐點時，按下空白鍵。

•	用滑鼠的左鍵（按左鍵）來按控制項。

•	只要其它指令按鈕沒擁有駐點，而在有指令按鈕的屬性預設為 True 的表單中按下 Enter。

•	只要其它指令按鈕沒擁有駐點，而在有指令按鈕的屬性預設為 True 的表單中按下 Esc。

•	按下控制項的對應鍵。

以下的事件的事件將導致 Click 事件：

1. MouseDown

2.f7 MouseUp

3.f7 Click

對某些控制項來說，Click 事件發生在當 Value 屬性改變時。無論如何，在偵測一屬性的新值時，使用 Change 事件是較偏向技術性的。下列的例子是由於指定一新值至控制項時所引發的 Click 事件：

•	在 Multipage 或 TabStrip 中按下不同頁或頁籤。這 Value 屬性是這些控制項反映現在頁或頁籤。按下現在頁或頁籤不能改變控制項的值，以及不會引發 Click 事件。

•	按下 CheckBox 或 ToggleButton。當這些控制項之一擁有駐點時，按空白鍵；對這些控制項之一來說或在程式碼中改變控制項的值時，按快速鍵。

•	改變 OptionButton 的值為 True。在一群組中設定OptionButton 為 True，而所有其它控制項為 False，但 Click 事件只發生於按鈕的值為 True 時。

•	設定 ComboBox 或 ListBox 的值使其在控制項的下拉式清單中確實地符合於某一項。舉例來說，若清單並未排序，則在編輯區的字元排列中第一個符合的並非在清單中，所以選出的值不會引發 Click 事件。而在排序過的清單中，您可以使用項目比對的方式，以確定使用者輸入的值符合清單中某一項目。

當 Value 設為 Null 時，Click 事件不會被引發。

附註  按下左鍵改變控制項的值，因此引發了 Click 事件。按下右鍵不能改變控制項的值，以致於不會引發 Click 事件。


DblClick 事件

發生在使用者將指標移至物件上，按兩下滑鼠鍵時。

語法

在活頁（MultiPage）或分頁（TabStrip）中
Private Sub object_DblClick( index As Long, ByVal Cancel As MSForms.ReturnBoolean)

在其它控制項中
Private Sub object_DblClick( ByVal Cancel As MSForms.ReturnBoolean)

DblClick 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
index	必要的引數。Page 或 Tab 物件在 Pages 在 Tabs 集合物件中的位置。
Cancel	必要的引數。False 表示控制項須處理此事件（預設）。True 表示由應用程式來處理此事件。
請注意

若要引發此事件，按兩下滑鼠鍵的速度須能達到系統中的設定值。

對支援 Click 的控制項而言，以下的事件將會造成 DblClick 事件：

1. MouseDown

2. MouseUp

3. Click

4. DblClick

像 TextBox 這樣的控制項，其本身並不支援 Click，所以在以上的事件序列中，Click 事件會被忽略，當然也不會造成 DblClick 事件了。

若當使用者按兩下所傳回的 Cancel 值為 True 時，則控制項會忽略所按的第二下。但有時按第二下與第一下的效果剛好為相反的，例如按二下切換按鈕。Cancel 引數可讓您的表單忽略所按的第二下，以致於使按一下與按二下有相同的效果。


DropButtonClick 事件

每當下拉式清單出現或消失時，就會引發此事件。

語法

Private Sub object_DropButtonClick( )

DropButtonClick 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

您可透過程式或使用者介面來引發 DropButtonClick 事件。

您可在程式中呼叫 DropDown 方法來引發 DropButtonClick 事件。

也可以在使用者介面中，由以下的動作來引發此事件：

•	按下控制項中的下拉式按鈕。

•	按下 F4。

無論以程式或人為操控的方式，以上的方法都能使下拉式方塊展開。此時系統就會引發 DropButtonClick 事件。


Enter, Exit 事件
Enter、Exit 事件

Enter 主要發生在一個控制項，從同一表單上的另一個控制項取得駐點之前；Exit 會在一個控制項失去駐點時發生。

語法

Private Sub object_Enter( )

Private Sub object_Exit( ByVal Cancel As MSForms.ReturnBoolean)

Enter 及 Exit 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。必須為一個物件的名稱。
Cancel	必要的引數。False 表示控制項須處理事件（預設）；True 表示應用程式須處理此事件，且駐點仍保留在目前控制項。
請注意

在 Visual Basic 中，Enter 及 Exit 事件非常類似 GotFocus 與 LostFocus 事件。但與 GotFocus 及 LostFocus 不同的是，當表單取得或失去駐點時，Enter 與 Exit 事件並不會發生。

例如，當您核取某個核取方塊時，便會引發 Enter 事件。若您接下來又選取了表單中的另一個控制項，就會引發核取方塊的 Exit 事件（因為駐點已經轉移到表單中的另一個控制項），與另個控制項的 Enter 事件。

因為 Enter 事件是發生在駐點轉移到一個控制項之前，所以您可利用 Enter 事件程序來顯示一些引導資訊；例如，您可用巨集或事件程序來顯示一個小表單或辨識資料型態的訊息方塊。

附註  若不想控制項失去駐點，可將 Exit 事件的 Cancel 引數設成 True。


Error 事件

發生在當控制項偵測到一個錯誤，或無法將錯誤資訊傳回給呼叫的程式時。

語法

在活頁（MultiPage）中
Private Sub object_Error( index As Long, ByVal Number As Integer, ByVal Description As MSForms.ReturnString, ByVal SCode As SCode, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, ByVal CancelDisplay As MSForms.ReturnBoolean)

在其它控制項中
Private Sub object_Error( ByVal Number As Integer, ByVal Description As MSForms.ReturnString, ByVal SCode As SCode, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, ByVal CancelDisplay As MSForms.ReturnBoolean)

Error 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。必須為一個物件的名稱。
index	必要的引數。MultiPage 中連結此事件的那一頁之索引值。
Number	必要的引數。指定一個控制項須用來辨視此錯誤的唯一值。
Description	必要的引數。錯誤的文字性描述。
SCode	必要的引數。指定此錯誤的 OLE 狀態碼。較低的 16 位元用來指定辨識 Number 引數的值。
Source	必要的引數。用來辯識引發此事件之控制項的字串。
HelpFile	必要的引數。指定一個描述此錯誤之說明檔所在的目錄。
HelpContext	必要的引數。指定一個描述此錯誤的說明主題代碼。
CancelDisplay	必要的引數。指定是否要顯示一個錯誤訊息方塊。
請注意

對 Error 事件所撰寫的程式碼，須決定遇到此錯誤時控制項如何回應。

處理錯誤的能力取決於應用程式本身，當應用程式無法處理發生的錯誤時，便會引發 Error 事件。


KeyDown, KeyUp 事件
KeyDown、KeyUp 事件

發生於使用者按下與放開按鍵時。KeyDown 發生在使用者按下按鍵；KeyUp 發生在使用者放開按鍵。

語法

Private Sub object_KeyDown( ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As fmShiftState)

Private Sub object_KeyUp( ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As fmShiftState)

KeyDown 及 KeyUp 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。必須為一個物件的名稱。
KeyCode	必要的引數。為一整數，代表按下或放開按鍵。
Shift	必要的引數。代表 SHIFT、CTRL 與 ALT 的狀態。
設定

Shift 的設定值有：

常數	值	說明
fmShiftMask	1	按下 SHIFT。
fmCtrlMask	2	按下 CTRL。
fmAltMask	4	按下 ALT。
請注意

當使用者於執行階段，在具有駐點的表單或控制項上按下按鍵，便會引發 KeyDown 事件；KeyDown 與 KeyPress 事件是相對的，所以當使用者按下按鍵時，就會引發 KeyUp 事件。擁有駐點的表單或控制項可以接收所有的按鍵訊息。而只有在表單上沒有任何控制項，或可見的控制項均失效時，才能擁有駐點。

這兩個事件的發生時機也可能在，當您使用巨集中的 SendKeys 或 Visual Basic 的 SendKeys 陳述式時。

KeyDown 與 KeyUp 事件一般用來辨認：

•	延伸字元，例如功能鍵。

•	巡覽鍵，例如：HOME、END、PAGEUP、PAGEDOWN、TAB 鍵及方向鍵。

•	組合鍵或是 SHIFT、CTRL 與 ALT。

•	數字鍵台或鍵盤中的數字鍵。

KeyDown 與 KeyUp 事件不會發生在以下的環境：

•	使用者在一個表單上按下 Enter 鍵，而該表單上有一個指令按鈕，其 Default 屬性為 True。

•	使用者在一個表單上按下 Esc 鍵，而該表單上有一個指令按鈕，其 Cancel 屬性為 True。

KeyDown 與 KeyPress 事件發生在當您按下或傳送一個 ANSI 鍵。KeyUp 事件會發生控制項其它的按鍵事件之後。若按鍵訊息造成駐點由一個控制項轉移到另一個控制項的話，KeyDown 事件就會發生在第一個控制項，KeyPress 與 KeyUp 事件則發生在第二個控制項。

各鍵盤相關事件的發生順序如下：

1. KeyDown

2. KeyPress

3. KeyUp

附註  KeyDown 與 KeyUp 事件只適用於表單與表單上的控制項。若需要解譯 ANSI 字元或找出按鍵相關的 ANSI 字元，就必須使用 KeyPress 事件了。


KeyPress 事件

發生在當使用者按下一個 ANSI 鍵時。

語法

Private Sub object_KeyPress( ByVal KeyANSI As MSForms.ReturnInteger)

KeyPress 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
KeyANSI	必要的引數。代表一個標準 ANSI 碼的整數值。
請注意

KeyPress 事件發生在當使用者於執行階段，在具有駐點的表單或控制項上按下一個可輸入字元的按鍵時（ANSI 鍵）。此事件可發生在按鍵被釋放之前或之後。此事件也能發生在當使用巨集中的 SendKeys 或 Visual Basic 的 SendKeys 陳述式，來傳送一個 ANSI 按鍵訊息給一個表單或控制項時。

KeyPress 事件可能發生在按下以下的按鍵時：

•	任何可列印的鍵盤字元。

•	CTRL 與英文字母鍵的組合。

•	CTRL 與特殊字元的組合。

•	BACKSPACE。

•	ESC。

KeyPress 事件不會發生在以下幾個情況中：

•	按 TAB 鍵。

•	按 ENTER 鍵。

•	按一個方向鍵。

•	當按鍵訊息造成駐點從一個控制項移到別一個。

附註  BACKSPACE 屬於 ANSI 字元集的一部份，但 DELETE 則否。所以在一個控制項中使用 BACKSPACE 刪除一個字元會造成 KeyPress 事件；使用 DELETE 刪除字元則否。

當使用者按了 ANSI 按鍵時，便會依序引發 KeyDown 與 KeyPress 事件。當使用者放開按鍵時，會發生 KeyUp 事件。擁有駐點的表單或控制項可以接受所有按鍵訊息。而只有在表單上沒有任何控制項，或可見的控制項均失效時，才能擁有駐點。

若按鍵訊息造成駐點由一個控制項轉移到另一個控制項的話，KeyDown 事件就會發生在第一個控制項，KeyPress 與 KeyUp 事件則發生在第二個控制項。

KeyPress 事件的預設動作，是先去處理與所按下之按鍵相關的事件程式碼。KeyANSI 便是代表所按下之按鍵或組合鍵相關的 ANSI 字元。KeyPress 事件會將一個字元的大小寫視為不同的兩個字元。

若要回應鍵盤的狀態，或處理 KeyPress 事件所無法識別的按鍵訊息，例如：功能鍵、巡覽鍵或是 ALT、SHIFT、CTRL 的組合鍵，請使用KeyDown 與 KeyUp 事件程序。

各鍵盤相關事件的發生順序如下：

1. KeyDown

2. KeyPress

3. KeyUp


Layout 事件

發生在當一個表單、Frame，或 MultiPage 改變大小時。

語法

在活頁（MultiPage）中
Private Sub object_Layout( index As Long)

在其他控制項中
Private Sub object_Layout( )

Layout 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
index	必要的引數。改變大小之 MultiPage 的頁索引值。
請注意

Layout 事件的預設動作是計算控制項新的位置，並在螢幕上重繪。

當使用者改變控制項大小時會引發 Layout 事件。

對支援 AutoSize 屬性的控制項來說，Layout 事件會在 AutoSize 改變控制項大小時引發。這會發生在當使用者改變會影響控制項大小的屬性值時。例如，加大 TextBox 或 Label 的 Font 大小，就可能會改變控制項的大小，並引發 Layout 事件。


MouseDown, MouseUp 事件
MouseDown、MouseUp 事件

發生在當使用者按了滑鼠鍵時。MouseDown 發生於使用者按下滑鼠鍵；而 MouseUp 發生在當使用者放開滑鼠鍵。

語法

在活頁（MultiPage）或分頁（TabStrip）中
Private Sub object_MouseDown( index As Long, ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

Private Sub object_MouseUp( index As Long, ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

在其它控制項中
Private Sub object_MouseDown( ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

Private Sub object_MouseUp( ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

MouseDown 及 MouseUp 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
index	必要的引數。MultiPage 或 TabStrip 中的頁索引值。
Button	必要的引數。用來識別滑鼠鍵的整數。
Shift	必要的引數。SHIFT、CTRL 及 ALT 的狀態。
X, Y	必要的引數。水平或垂直位置，以點數計，由表單、Frame 或Page 的左緣或上緣為起點。
設定

Button 的設定值有：

常數	值	說明
fmButtonLeft	1	按下左滑鼠鍵。
fmButtonRight	2	按下右滑鼠鍵。
fmButtonMiddle	4	按下中滑鼠鍵。
Shift 的設定值有：

值	說明
1	按下 SHIFT。
2	按下 CTRL。
3	按下 SHIFT 與 CTRL。
4	按下 ALT。
5	按下 ALT 與 SHIFT。
6	按下 ALT 與 CTRL。
7	按下 ALT、SHIFT 與 CTRL。
使用以下常數可以識別各鍵盤修飾鍵：

常數	值	說明
fmShiftMask	1	用來偵測 SHIFT。
fmCtrlMask	2	用來偵測 CTRL。
fmAltMask	4	用來偵測 ALT。
請注意

對 MultiPage 控制項來說，MouseDown 事件發生在當使用者在控制項上按下一個滑鼠鍵。

對 TabStrip 來說，index 引數用來識別使用者按下那個 tab。索引值 -1 代表使用者並沒有按下任何 tab。例如，控制項的右上角並沒有任何 tabs，那麼若在此處按下滑鼠鍵便會將索引值設為 -1。

對表單來說，使用者可在空白區或捲軸按下並放開滑鼠鍵，來引發 MouseDown 與 MouseUp 事件。

各滑鼠相關事件的發生順序如下：

1. MouseDown

2. MouseUp

3. Click

4. DblClick

5. MouseUp

MouseDown 或 MouseUp 事件程序用來指定當按下或放開滑鼠鍵時，要執行什麼動作。MouseDown 與 MouseUp 事件可讓您判別滑鼠左、中、右鍵。您也可以為滑鼠鍵與鍵盤上的 SHIFT、CTRL，及 ALT 鍵結合成的組合鍵設計程式碼。

當滑鼠指標在表單或控制項上時，若按下滑鼠鍵，則該物件將會 [捕捉] 滑鼠並接收此後所有的滑鼠事件，直到最後的 MouseUp 事件發生為止。這表示滑鼠事件傳回的 X, Y 滑鼠指標之座標，可以不必一直在該物件內。

若連續按下各滑鼠鍵，則捕捉到滑鼠的物件會接收所有連續的滑鼠事件，直到放開所有滑鼠鍵為止。

當 MouseDown 或 MouseUp 事件發生時，可使用 Shift 引數來識別 SHIFT、CTRL 及 ALT 的狀態。例如，若同時按下 CTRL 與 ALT，則 Shift 值為 6。


MouseMove 事件

發生在當使用者移動滑鼠時。

語法

在活頁（MultiPage）與分頁（TabStrip）中
Private Sub object_MouseMove( index As Long, ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

在其它控制項中
Private Sub object_MouseMove( ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

MouseMove 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。必須為一個物件的名稱。
index	必要的引數。MultiPage 或 TabStrip 的頁索引值。
Button	必要的引數。用來識別滑鼠鍵的整數。
Shift	必要的引數。指定 SHIFT、CTRL，及 ALT 的狀態。
X, Y	必要的引數。水平或垂直位置，以點數計，由控制項的左緣或上緣為起點。
設定

index 引數用來指定按下那一頁或那一個 tab，A .-1 表示使用者並沒有在任一頁或 tabs 上按下滑鼠鍵。

Button 的設定值有：

值	說明
0	未按下滑鼠鍵。
1	按下左滑鼠鍵。
2	按下右滑鼠鍵。
3	同時按下左與右滑鼠鍵。
4	按下中滑鼠鍵。
5	同時按下左與中滑鼠鍵。
6	同時按下右與中滑鼠鍵。
7	同時按下三個滑鼠鍵。
Shift 的設定值有：

值	說明
1	按下 SHIFT。
2	按下 CTRL。
3	按下 SHIFT 與 CTRL。
4	按下 ALT。
5	按下 ALT 與 SHIFT。
6	按下 ALT 與 CTRL。
7	按下 ALT、SHIFT 與 CTRL。
使用以下常數可以識別各鍵盤修飾鍵：

常數	值	說明
fmShiftMask	1	用來偵測 SHIFT。
fmCtrlMask	2	用來偵測 CTRL。
fmAltMask	4	用來偵測 ALT。
請注意

MouseMove 事件適用於表單、表單上的控制項與標籤。

當指標移到不同物件時，MouseMove 事件仍可持續產生，除非另一個物件捕捉了滑鼠，當指標進入物件邊線內，該物件就能辨認 MouseMove 事件。

移動表單也會引發 MouseMove 事件，即使滑鼠是不動的。當此表單移至指標之下時，MouseMove 事件就會發生。例如若使用一個巨集或事件程序來移動表單便會造成 MouseMove 事件，且此事件會持續引發 MouseMove 事件。

若兩個控制項靠的非常近，而您在其兩者的空隙間快速移動滑鼠指標，則 MouseMove 事件可能不會發生在此空隙間，在這種狀況下，您可能得分別在這兩個控制項中回應 MouseMove 事件。

您可利用 Button 引數的傳回值來判斷滑鼠鍵的狀態。

當 MouseDown 或 MouseUp 事件發生時，可使用 Shift 引數來識別 SHIFT、CTRL 及 ALT 的狀態。例如，若同時按下 CTRL 與 ALT，則 Shift 值為 6。

附註  您可使用 MouseDown 與 MouseUp 事件程序來回應按下與放開滑鼠鍵所造成的事件。


RemoveControl 事件

發生在從收納器（container）中刪除一個控制項時。

語法

在活頁（MultiPage）中
Private Sub object_RemoveControl( index As Long, ctrl As Control)

在其他控制項中
Private Sub object_RemoveControl( ctrl As Control)

RemoveControl 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。必須為一個物件的名稱。
index	必要的引數。含有該刪除控制項之 MultiPage 的頁索引值。
ctrl	必要的引數。要刪除的控制項。
請注意

此事件只發生在由表單中刪除一個控制項，不能是在因關閉表單而載出控制項時。


Scroll 事件

發生在當改變捲動方塊大小時。

語法

在捲軸（ScrollBar）
Private Sub object_Scroll( )

在活頁（MultiPage）中
Private Sub object_Scroll( index As Long, ActionX As fmScrollAction, ActionY As fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)

在框架（Frame）中
Private Sub object_Scroll( ActionX As fmScrollAction, ActionY As fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)

Scroll 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。必須為一個物件的名稱。
index	必要的引數。MultiPage 中的頁索引值。
ActionX	必要的引數。水平方向的動作。
ActionY	必要的引數。垂直方向的動作。
RequestDx	必要的引數。您想要捲軸在水平方向的移動距離，單位為點。
RequestDy	必要的引數。您想要捲軸在垂直方向的移動距離，單位為點。
ActualDx	必要的引數。捲軸在水平方向的移動距離，單位為點。
ActualDy	必要的引數。捲軸在垂直方向的移動距離，單位為點。
設定

ActionX 及 ActionY 的設定值有：

常數	值	說明
fmScrollActionNoChange	0	無任何改變。
fmScrollActionLineUp	1	在捲軸垂直方向向上一小段距離，或在捲軸水平方向向左一小段距離。就如同在鍵盤上按下向上或向左鍵，來移動捲軸。
fmScrollActionLineDown	2	在捲軸垂直方向向下一小段距離，或在捲軸水平方向向右一小段距離。就如同在鍵盤上按下向下或向右鍵，來移動捲軸。
fmScrollActionPageUp	3	在捲軸垂直方向向上一頁，或在捲軸水平方向向左一頁。就如同在鍵盤上按下 PAGE UP。
fmScrollActionPageDown	4	在捲軸垂直方向向下一頁，或在捲軸水平方向向右一頁。就如同在鍵盤上按下 PAGE DOWN。
fmScrollActionBegin	5	垂直捲軸的最上端，水平捲軸的最左端。
fmScrollActionEnd	6	垂直捲軸的最底端，水平捲軸的最右端。
fmScrollActionPropertyChange	8	ScrollTop 或 ScrollLeft 屬性值改變。移動的方向與距離取決於改變的屬性為何與其新的屬性值。
fmScrollActionControlRequest	9	一個控制項要求其收納器捲動，移動的距離取決於控制項與收納器。
fmScrollActionFocusRequest	10	使用者移至另一個控制項，移動的距離取決於所選取控制項的配置，且一般具有移動選取控制項的效果。
請注意

Scroll 事件的結果是由以下引數傳回：ActionX、ActionY、ActualX，及 ActualY。ActionX 與 ActionY 用來識別所發生的動作；ActualX 與ActualY 用來識別所移動的距離。

預設的動作為算出捲動方塊新的位置，並捲動至該處。

從表單、Frame 或 Page 中由啟動 Scroll 方法來引發 Scroll 事件。使用者可移動捲軸方塊來產生 Scroll 事件。

Scroll 事件與獨立的 ScrollBar 連結表示使用者可無方向性地移動捲軸方塊。當藉著程式或使用者按 ScrollBar 的部份來改變 ScrollBar 的值時此事件不會被引發。


SpinDown, SpinUp 事件
SpinDown，SpinUp 事件

SpinDown 發生在當使用者按了微調按鈕下面或左邊的箭號，SpinUp 發生在當使用者按了微調按鈕上面或右邊的箭號。

語法

Private Sub object_SpinDown( )

Private Sub object_SpinUp( )

SpinDown 及 SpinUp 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

SpinDown 事件會使 Value 屬性值減小；SpinUp 事件會使 Value 屬性值增加。


Zoom 事件

發生在當 Zoom 屬性值改變時。

語法

在框架（Frame）中
Private Sub object_Zoom( Percent As Integer)

在活頁（MultiPage）中
Private Sub object_Zoom( index As Long, Percent As Integer)

Zoom 事件的語法具有以下幾個單元：

單元	說明
object	必要的引數。為一個物件的名稱。
index	必要的引數。MultiPage 中的頁索引值。
Percent	必要的引數。表單放大縮小的比例，其值介於百分之 10 與400 之間。
請注意

Zoom 屬性值代表表單或 Page 改變的大小，此屬性值可決定控制項要改變的大小相對於原來的比例。其值小於 100 會使表單變小；大於 100 會使表單變大。

您可將此屬性值設成 10 到 400 間的整數。


Add 方法

在 TabStrip 或 MultiPage 中新增或插入一個 Tab 或 Page，或是以程式設計代碼 (ProgID) 新增一個控制項到表單中。

語法

在活頁（MultiPage）或分頁 （TabStrip）中
Set Object = object.Add( [ Name [,  Caption [,  index]]])

在其它控制項中
Set Control = object.Add(  ProgID [,  Name [,  Visible]])

Add 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。為一個物件的名稱。
Name	選擇性引數。指定要新增的物件名稱，若不指定，系統會依據表單所在的應用程式，產生一個預設的名稱。
Caption	選擇性引數。指定 tab 或控制項的標題，若不指定，系統會依據表單所在的應用程式，產生一個預設的標題。
index	選擇性引數。代表一個 page 或 tab 在 Pages 或 Tabs 集合物件中的位置，若不指定，系統會將 page 或 tab 加到 Pages 或 Tabs 集合物件的最後，並指定適當的索引值。
ProgID	必要的引數。程式設計識別碼，一個沒有空白、用來識別一個物件類別的文字字串。ProgID 的標準格式為 <Vendor>.<Component>.<Version>。ProgID 都是對應到一個物件類別識別碼(CLSID)。
Visible	選擇性引數。True 表示該物件是可見的（預設上）； False 表示該物件是隱藏的。
設定

各控制項的 ProgID 值為：

CheckBox	Forms.CheckBox.1
ComboBox	Forms.ComboBox.1
CommandButton	Forms.CommandButton.1
Frame	Forms.Frame.1
Image	Forms.Image.1
Label	Forms.Label.1
ListBox	Forms.ListBox.1
MultiPage	Forms.MultiPage.1
OptionButton	Forms.OptionButton.1
ScrollBar	Forms.ScrollBar.1
SpinButton	Forms.SpinButton.1
TabStrip	Forms.TabStrip.1
TextBox	Forms.TextBox.1
ToggleButton	Forms.ToggleButton.1
請注意

對 MultiPage 控制項來說，Add 方法會傳回一個 Page 物件；而對TabStrip 來說，則會傳回一個 Tab 物件。在集合物件中，第一個 Page 或 Tab 的索引值為 0，第二個 Page 或 Tab 為 1，以此類推。

對一個物件的 Controls 集合物件來說，Add 方法會傳回一個相對於所指定 ProgID 的控制項。AddControl 事件會發生在控制項加入之後。

在設計階段中下列是針對加入控制項所傳回的 Text 屬性值的語法：

•	userform1.thebox.text

若在執行階段加入一個控制項，必須使用特殊語法來引用該控制項的屬性。例如，在執行階段中傳回所加入的控制項的 Text 屬性，可用下列語法：

•	userform1!thebox.text

附註  若您是在執行階段以 Add 方法加入一個使用者，則您可以在執行階段更改控制項的 Name 屬性。


AddItem 方法

在一個單列清單方塊或下拉式清單方塊中加入一個項目。在一個多列清單方塊或下拉式清單方塊中加入一行。

語法

Variant = object.AddItem( [ item [,  varIndex]])

AddItem 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
item	選擇性引數。指定要新增的成員，第一個成員為 0；第二個成員為 1，以此類推。
varIndex	選擇性引數。整數，用來指定要新增項目之物件中的整數。
請注意

當您提供了正確的 varIndex 之後，AddItem 方法就會將該項目放到這個清單中的位置。若省略掉 varIndex，該項目就會被放到清單中的最後。

VarIndex 的值不必大於 ListCount 屬性的值。

對多列的 ListBox 或 ComboBox 來說，AddItem 可插入一行，使其項目可插入控制項的每一欄。若要指定第一列中一項目的值，須使用 List 或 Column 的屬性，並指出該項的行與列值。

若控制項限於資料，則 AddItem 方法失效。

附註  您可使用 List 屬性，在 ComboBox 或 ListBox 中同時新增多於一列。


Clear 方法

從一個物件或集合物件中移除所有物件。

語法

object.Clear

Clear 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

對 MultiPage 或 TabStrip 來說，Clear 方法可用來刪除個別的頁籤。

對 ListBox 或 ComboBox 來說，Clear 方法可用來刪除清單中所有的項目。

對 Controls 集合物件來說，Clear 方法可用來刪除執行階段以 Add 方法建立的控制項。將 Clear 用在設計階段所建立的控制項，將會造成錯誤。

若控制項限於資料，則 Clear 方法失效。


Copy 方法

將物件的內容複製到剪貼簿。

語法

object.Copy

Copy 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

這些原始的內容仍會保留在物件中。

複製的實際內容取決於該物件。例如，在 Page 中Copy 方法複製目前所選取的控制項；在 TextBox 或 ComboBox 中，則會複製到目前所選的文字。

在表單、Frame 與 Page 中使用 Copy，可複製目前作用中的控制項。


Cut 方法

從物件中移除選取的資訊，並將其傳送到剪貼簿。

語法

object.Cut

Cut 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數，指一個物件。
請注意

在 TextBox 或 ComboBox 中，Cut 方法會將所選的文字移到剪貼簿中。此方法並不需控制項具有駐點。

在 Page、Frame，或表單中，Cut 會將目前選取的控制項移至剪貼簿。此方法只能移除執行階段所建立的控制項。


DropDown 方法

顯示 ComboBox 的清單部份。

語法

object.DropDown

DropDown 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

使用 DropDown 方法可開啟下拉式清單方塊的清單。


GetFormat 方法

傳回一個整數值，可用以判斷在 DataObject 中指定的資料格式。

語法

Boolean = object.GetFormat( format)

GetFormat 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
format	選擇性引數。整數或字串，用來指定在 DataObject 中存在的資料格式。若指定的格式存在於 DataObject 中，則 GetFormat 傳回 True。
設定

format 的設定值有：

值	說明
1	文字格式。
字串或任何整數值大於 1	從 SetText 傳給 DataObject 的使用者自訂格式。
請注意

GetFormat 方法會搜尋 DataObject 中格式清單裡的一種格式。若 DataObject 中有此格式，GetFormat 會傳回 1；若否，GetFormat 會傳回 0。

DataObject 僅能支援文字格式。


GetFromClipboard 方法

從剪貼薄中複製資料至 DataObject.

語法

String = object.GetFromClipboard( )

GetFromClipboard 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。為一個物件的名稱。
請注意

DataObject 包含援多種資料項目，但每個資料項目必在於不同的格式中。例如，DataObject 可包含一個文字項目及在自訂格式中一個項目，但卻無法含有兩個文字項目。


GetText 方法

從 DataObject 中取得一個以特殊資料格式的文字字串。

語法

String = object.GetText( [ format])

GetText 方法的語法具有下列幾個單元：

單元	說明
object	必要的引數。一個物件的名稱。
format	選擇性引數。一個字串或整數，指定從 DataObject.中取得資料的格式。
設定

format 的設定值為：

值	說明
1	文字格式。
字串或任何整數值大於1	從 SetText 傳給 DataObject 的使用者自訂格式。
請注意

DataObject 支援多種格式，但只針對每種格式的一種資料項目。例如，DataObject 可包含一種文字項目及在自訂格式中一個項目，但兩種文字資料項目不能並存。

若沒指定格式，則 GetText 方法會從 DataObject 中要求文字格式的資訊。


Item 方法

傳回集合物件的一個成員，包括位置或名稱。

語法

Set Object = object.Item(  collectionindex)

Item 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
collectionindex	必要的引數。一個成員在集合物件中的位置或索引。
設定

collectionindex 可以是字串，也可以是整數。若是字串，就必須是正確的成員名稱；若是整數，則其最小值為 0，而最大值必須小於集合物件中的項目數。

請注意

若指定了不正確的索引或名稱，就會發生錯誤。


Move 方法

移動一個表單或控制項，或者是在控制項的集合物中移動所有的控制項。

語法

在表單或控制項中：

object.Move( [Left [,  Top [,  Width [,  Height [,  Layout]]]]])

在控制項的集合物中；

object.Move( X, Y)

Move 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。為一個物件的名稱。
Left	選擇性引數。單精數，單位為點數，用來指定物件左端的水平座標。
Top	選擇性引數。單精數，單位為點數，用來指定物件上端的垂直座標。
Width	選擇性引數。單精數，單位為點數，用來指定物件寬度。
Height	選擇性引數。單精數，單位為點數，用來指定物件高度。
Layout	選擇性引數。Boolean 值，用來指示 Layout 事件是否隨著控制項的移動而被引發。False 為預設值。
X, Y	必要的引數。單精數，單位為點數，用來指示在控制項的集合物件中改變每一個控制項目前的水平及垂直位置。
設定

從一應用程式到另個應用程式中，此屬性最大及最小值的變化

請注意

您可將選取選取項目到相對於表單邊緣的某個位置。

您可使用指名引數，或依位置輸入一個引數。若使用指名引數，您就必須列出所有的引數；否則，您就必須依序輸入引數，並以逗號區隔，未指定的引數也必須保留其位置。

對 Controls 的集合物件來說，可將所有在此集合物件中的控制項，從表單、Frame 或 Page 中目前的位置移動一定的距離。


Paste 方法

將剪貼簿裡的內容傳給一個物件。

語法

object.Paste

Paste 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

貼至 ComboBox 或 TextBox 的資料會被視為文字。

當 Paste 方法用於表單時，您可將任何物件貼至表單。


PutInClipboard 方法

從 DataObject 移動資料到剪貼簿中。

語法

object.PutInClipboard

PutInClipboard 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

PutInClipboard 方法可將剪貼薄的內容用 DataObject 文字格式的內容來取代。


RedoAction 方法

取消最近一次的復原動作。

語法

Boolean = object.RedoAction

RedoAction 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

 [重做] 可取消上一次的 [復原]，期間不見得要有其它動作發生。並非所有的動作可以復原。

例如，在 TextBox 貼上文字後選取 [復原] 指令，可移除此文字；您可再選取 [重做] 指令把文字貼回去。

附註  若 CanRedo 屬性為 False， [重做] 指令便無法在使用者介面中選取，且在程式碼中，RedoAction 方法是不正確的。

若成功的話，RedoAction 會傳回 True。


Remove 方法

從集合物件中移除一個成員，或從 Frame、Page 或表單中移除一個控制項。

語法

object.Remove(  collectionindex)

Remove 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
collectionindex	必要的引數。在集合物件中一成員的位置、索引。可以是字串，也可以是整數。若是整數，則其最小值為 0，而最大值必須小於集合物件中的項目數；若是字串，就必須是正確的成員名稱。
請注意

此方法可移除任何在執行階段新增的控制項。但若用來刪除在設計階段新增的控制項，便會傳回一個錯誤。


RemoveItem 方法

從清單方塊或下拉式清單方塊中移除清單部份的一列。

語法

Boolean = object.RemoveItem(  index)

RemoveItem 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
index	必要的引數。指定要刪除的列；第一列為 0，第二列為 1，以此類推。
此方法無法從清單中移除一行，若 ListBox 的資料是連結的（就是說，已使用 RowSource 屬性來指定 ListBox 的資料來源）。


Repaint 方法

以重畫表單或頁的方式來更新顯示。

語法

Boolean = object.Repaint

Repaint 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

Repaint 方法經常用於物件的內容或外觀發生較大的改變，而您又不想等待系統自行重畫此區域時。


Scroll 方法

在物件上移動捲軸。

語法

object.Scroll( [ ActionX [,  ActionY]])

Scroll 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。為一個物件的名稱。
ActionX	選擇性引數。水平方向的動作。
ActionY	選擇性引數。垂值方向的動作。
設定

ActionX 與 ActionY 引數都可使用以下的值：

常數	值	說明
fmScrollActionNoChange	0	無任何改變。
fmScrollActionLineUp	1	在捲軸垂直方向向上一小段距離，或在捲軸水平方向向左一小段距離。就如同在鍵盤上按下向上或向左鍵，來移動捲軸。
fmScrollActionLineDown	2	在捲軸垂直方向向下一小段距離，或在捲軸水平方向向右一小段距離。就如同在鍵盤上按下向下或向右鍵，來移動捲軸。
fmScrollActionPageUp	3	在捲軸垂直方向向上一頁，或在捲軸水平方向向左一頁。就如同在鍵盤上按下 PAGE UP。
fmScrollActionPageDown	4	在捲軸垂直方向向下一頁，或在捲軸水平方向向右一頁。就如同在鍵盤上按下 PAGE DOWN。
fmScrollActionBegin	5	垂直捲軸的最上端，水平捲軸的最左端。
fmScrollActionEnd	6	垂直捲軸的最底端，水平捲軸的最右端。
請注意

Scroll 方法適用於出現在表單、Frame 或 Page 的捲軸。此法不適用於出現在獨立的 ScrollBar 或 TextBox.的捲軸。


SetDefaultTabOrder 方法

設定表單中各控制項的 TabIndex 屬性，預設的定位順序為由上到下，由左而右。

語法

object.SetDefaultTabOrder

SetDefaultTabOrder 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

在Microsoft Forms預設的定位順序上，從左上角的控制項開始，向右移。而放在左邊的控制項是第一個。若從表單的左邊開始有一個以上同距離的控制項時，則定位順序的值是由上而下分配。


SetFocus 方法

將駐點移到此物件的執行個體上。

語法

object.SetFocus

SetFocus 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

若設定駐點失敗，則駐點仍回到上一個物件，並會發生錯誤。

預設上，將駐點設至某控制項，並不會使該控制項的視窗處於作用中，也不會將其置於其它控制項之上。

SetFocus 方法可用於一空的 Frame及包含其它控制項的 Frame 。一個空的 Frame 將可自己取得駐點，以及可適用任何併發的鍵盤事件。而包含其它控制項的 Frame，駐點將放在 Frame 中的第一個控制項上，且併發的鍵盤事件只適用於取得駐點的控制項。


SetText 方法

使用特殊資料格式將一個文字字串複製到 DataObject。

語法

object.SetText(  StoreData [,  format])

SetText 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
StoreData	必要的引數。定義要放到 DataObject 中的資料。
format	選擇性引數。整數或字串，用來指定儲存資料的格式。當從 DataObject 中取得資料時，所識別的格式
設定

format 的設定值有：

值	說明
1	文字格式。
字串或整數值大於 1	使用者自訂的 DataObject 格式。
請注意

DataObject 會根據格式來存放資料。當使用者提供的是文字時，DataObject 就會將其存成指定格式的文字。

若 DataObject 中新資料與原有資料的格式相同，則新資料將會取代原有的資料。若新資料是一個新格式，則新資料及其格式都將加入至 DataObject 中，且先前的資料仍存在。

若不指定格式，SetText 方法會把字串指定為標準的文字格式。若指定的是一個新的格式，則 DataObject 就會將此格式登記到系統中。


StartDrag 方法

引發一個 DataObject 的拖放動作。

語法

fmDropEffect=Object.StartDrag([Effect as fmDropEffect])

StartDrag 方法的語法具有以下幾個單元：

單元	說明
Object	必要的引數。指一個物件。
Effect	選擇性引數。在目標控制項執行放下動作的效果。
設定

Effect 的設定值有：

常數	值	說明
fmDropEffectNone	0	不將放下來源複製或移動到目標。
fmDropEffectCopy	1	將來源複製到目標。
fmDropEffectMove	2	將來源移動到目標。
fmDropEffectCopyOrMove	3	將來源複製或移動到目標。
請注意

拖曳動作的開始與目前滑鼠指標位置和鍵盤狀態有關，並結束於使用者放開滑鼠鍵。拖放動作的效果則取決於您對放下目標所選擇的效果。

例如，控制項的 MouseMove 事件可能包括了 StartDrag 方法，當使用者按一下控制項並移動滑鼠時，滑鼠指標便會改變，以指示 Effect 是否是正確的。


UndoAction 方法

取消最近的動作，其支援 [復原] 指令。

語法

Boolean = object.UndoAction

UndoAction 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

使用者介面中的 [復原] 指令可使用 UndoAction 方法。例如，若您將文字貼到 TextBox，您可使用 UndoAction 來移除文字，並恢復 TextBox 先前的狀態。

並非所有的動作都能復原。若一個動作本身就是無法復原的，那麼 [復原] 指令對此動作便沒有任何作用。

附註  若 CanUndo 屬性為 False，則使用者介面中的 [復原] 指令為無效的，程式碼中的 UndoAction 也是不正確的。

若 UndoAction 被應用在表單上，則目前記錄的所有改變都將失去；若 UndoAction 被應用在控制項上，則只影響此控制項。

在表單或控制項更新前，您可使用此方法。您可以將此方法含括至表單的 BeforeUpdate 事件或控制項的 Change 事件。

UndoAction 的作用，也能以 SendKeys 陳述式在事件程序中傳送 ESC 的值來達成。


ZOrder 方法

將物件置於疊置順序的前或後。

語法

object.ZOrder( [ zPosition])

ZOrder 方法的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
zPosition	選擇性引數。控制項的位置在收納器的疊置順序是前或後。
設定

zPosition 的設定值有：

常數	值	說明
fmTop	0	將控制項放在疊置順序的前方，該控制項會在其它控制項的上方（預設）。
fmBottom	1	將控制項放在疊置順序的後方，該控制項會在其它控制項的下方。
請注意

疊置順序可用來決定視窗與控制項在使用者檢視時的堆置方式。疊置順序較後面的項目會被置於鄰近項目的下方；疊置順序較前面的項目會被置於鄰近項目的上方。若省略 zPosition，則物件會被置於前方。

在設計階段中， [移至頂層] 或 [移至底層] 指令便是用來設定疊置順序，前者相當於用 ZOrder 方法把物件置於疊置順序的最前面；後者相當於用 ZOrder 方法把物件置於疊置順序的最後面。

此方法不能影響 Controls 集合物件中各控制項的內容或結果。

附註   不能 [復原] 或 [重複] 像 [移至頂層] 或 [移至底層] 這樣的指令。舉例來說，若您選取一個物件且在快顯功能表上按下 [移至底層]，將不能用 [復原] 或 [重複] 動作。


Accelerator 屬性

指定控制項的對應鍵。

語法

object.Accelerator [= String]

Accelerator 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。用來作為對應鍵的字元。
請注意

若要指定對應鍵，可輸入一個字元到 Accelerator 屬性。您可在控制項的屬性表或程式碼中設定 Accelerator。若此屬性值含有多於一個字元，則字串中第一個字元就是 Accelerator 的值。

使用對應鍵時，您就無法經由任何看得見的反應，得知控制項的 Click 事件已被引發。例如，若使用 CommandButton 的對應鍵，使用者將無法看到按鈕已被按下，但此按鈕已取得駐點。

若使用 Label 的對應鍵，則定位順序在 Label 之後的控制項（但不能是 Label）會取得駐點。


ActiveControl 屬性

識別並使具有駐點的控制項能夠接受處理。

語法

object.ActiveControl

ActiveControl 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

ActiveControl 屬性是唯讀的，且當您在使用者介面選取時會被設定。您可在設定屬性或呼叫方法時，使用 ActiveControl 來代替該控制項的名稱。


Alignment 屬性

指定控制項標題的位置。

語法

object.Alignment [= fmAlignment]

Alignment 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmAlignment	選擇性引數。標題位置。
設定

fmAlignment 的設定值有：

常數	值	說明
fmAlignmentLeft	0	將標題放至控制項的左邊。
fmAlignmentRight	1	將標題放至控制項的右邊（預設）。
請注意

控制項的標題文字是向左對齊。

附註  雖然 ToggleButton 不支援 Alignment 屬性，所以改變此屬性對 ToggleButton 並無影響。


AutoSize 屬性

指定一個物件是否要自動調整大小，來顯示其完整的內容。

語法

object.AutoSize [= Boolean]

AutoSize 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。控制項是否被改變大小。
設定

Boolean 的設定值有：

值	說明
True	自動調整大小以顯示其完整的內容。
False	保持控制項原來的大小，當其內容超過控制項區域時，就會被截掉（預設）。
請注意

對有標題的控制項而言，AutoSize 屬性可決定控制項是否自動調整以顯示完整的內容。

對沒有標題的控制項而言，此屬性可決定控制項是否自動調整以顯示控制項的資訊。例如，在 ComboBox 中，將 AutoSize 設為 True，可自動調整大小以符合顯示區域中文字的寬度。

對單行的文字方塊而言，將 AutoSize 設為 True，可自動調整大小以符合文字的寬度。

對多行卻無文字內容的文字方塊而言，其原本就可自動以換行方式來顯示文字，將 AutoSize 設為 True，可使其自動調整高度及以字型最寬的字來自動調整寬度，以顯示 TextBox 完整的文字內容，。

對多行及有文字內容的文字方塊而言，將 AutoSize 設為 True，可使其自動調整高度以顯示 TextBox 完整的文字內容。但其 TextBox 的寬度不會改變。

附註   當 AutoSize 為 True 時，若您以手動的方式來改變控制項的大小，則不會超過先前由 AutoSize 所設定的大小。


AutoTab 屬性

指定使用者將資料填滿 TextBox 或 ComboBox 的輸入區域時，是否自動定位。

語法

object.AutoTab [= Boolean]

AutoTab 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。指定是否自動定位。
設定

Boolean 的設定值有：

值	說明
True	自動定位。
False	不自動定位（預設）。
請注意

MaxLength 屬性可用來指定 TextBox 或 ComboBox 文字區的最大字元數。

您可指定須輸入一組字元之 TextBox 或 ComboBox 的 AutoTab 屬性。當使用者輸入的字元達到最大值時，駐點便自動轉移到下一個定位順序的控制項。例如，若一個 TextBox 是用來顯示 5 個字元長的股票編號，那麼您可使用 MaxLength 來指定可輸入至 TextBox 最大字元數為 5，並設定 AutoTab 為自動定位。則當使用者輸入 5 個字元後，駐點就會自動移到下一個控制項。

可支援從一應用程式至另一個的 AutoTab 變化。並非所有接納器都支援此屬性。


AutoWordSelect 屬性

用來指定延伸選取時，是否以一個字或字元為基本單位。

語法

object.AutoWordSelect [= Boolean]

AutoWordSelect 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。指定延伸選取的基本單位。
設定

Boolean 的設定值有：

值	說明
True	使用一個字為基本單位（預設）。
False	使用一個字元為基本單位。
請注意

AutoWordSelect 屬性可用來指定 TextBox 或 ComboBox 的編輯區，在選取動作發生時的延伸方式。

當 AutoWordSelect 設為 True 時，若使用者將插入點置於一個字的中間，並按兩下滑鼠鍵延伸選取範圍，則就會選取整個字。


BackColor 屬性

用來指定物件的背景顏色。

語法

object.BackColor [= Long]

BackColor 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。用來決定物件背景顏色的數值或常數。
設定

您可使用代表正確色彩的整數，也可用 RGB 函數，以紅、綠、藍三原色來指定顏色，此三原色的值都是介於 0 到 255 的整數值。例如，您可用 4966415來指定藍綠色，也可以用三原色 15、200、75 來指定。

請注意

若 BackStyle 屬性設成 fmBackStyleOpaque，那麼您就只能看見物件的背景顏色。


BackStyle 屬性

用來傳回或設定物件的背景樣式。

語法

object.BackStyle [= fmBackStyle]

BackStyle 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmBackStyle	選擇性引數。用來指定控制項的背景。
設定

fmBackStyle 的設定值有：

常數	值	說明
fmBackStyleTransparent	0	背景為透明的。
fmBackStyleOpaque	1	背景為不透明的（預設）。
請注意

BackStyle 屬性可用來決定控制項是否為透明。若BackStyle 為 fmBackStyleOpaque，則控制項為不透明的，且您不能在表單上看見控制項後面的部份；若 BackStyle 為 fmBackStyleTransparent，則您將可看見表單位於控制項正下方的部份。

附註  BackStyle 並不會影響到點陣圖。您可使用 [小畫家] 等繪圖軟體，才能使點陣圖變成透明。但並非每個控制項都支援透明的點陣圖。


Bold, Italic, Size, StrikeThrough, Underline, Weight 屬性
Bold、Italic、Size、StrikeThrough、Underline、Weight 等屬性

用來指定文字在表單中顯示時的外觀屬性。

語法

object.Bold [= Boolean]

object.Italic [= Boolean]

object.Size [= Currency]

object.StrikeThrough [= Boolean]

object.Underline [= Boolean]

object.Weight [= Integer]

Bold、Italic、Size、StrikeThrough、Underline，及 Weight 等屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。為一個物件的名稱。
Boolean	選擇性引數。指定字型的樣式。
Currency	選擇性引數。指定字型大小。
Integer	選擇性引數。指定字型的樣式。
Boolean 的設定值有：

值	說明
True	文字具有該屬性（也就是粗體、斜體、刪除線、底線等等）。
False	文字不具有該屬性（預設）。
Weight 屬性可接受 0 到 1000 的值。0 代表系統所能賦予的最適當的值，1 到 1000 代表指定的粗細程度，1 表示最細，1000 則表示最粗。

請注意

這些屬性都是用來定義文字外觀的種種特質。Bold 屬性用來決定文字是否為粗體；Italic 屬性用來決定文字是否為斜體；Size 屬性用來決定文字的大小點數；Underline 屬性用來決定文字是否要加底線；StrikeThrough 屬性用來決定文字是否要加刪除線；Weight 屬性用來決定文字的粗細。

字型在螢幕上顯示與在列印時有可能會不同，須視您的電腦和印表機而定。若您所指定的字型是系統所無法顯示的，或是根本就沒安裝，則 Windows 會以一個最相近的字型來取代。若有可能，會選取一個相同系列的字型來取代。

改變 Bold 同時也會影響到 Weight。若將 Bold 設為 True 等於將Weight 設成 700；將 Bold 設為 False 等於將 Weight 設成 400。同樣的道理，若將 Weight 設為 550 以上等於將 Bold 設成 True；將 Weight 設為 550 以下等於將 Bold 設成 False。

預設的點數取決於系統。


BorderColor 屬性

用來指定物件框線的顏色。

語法

object.BorderColor [= Long]

BorderColor 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。用來決定物件框線顏色的數值或常數。
設定

您可使用代表正確色彩的整數，也可用 RGB 函數，以紅、綠、藍三原色來指定顏色，此三原色的值都是介於 0 到 255 的整數值。例如，您可用 4966415來指定藍綠色，也可以用三原色 15、200、75 來指定。

請注意

使用 BorderColor 屬性時，BorderStyle 屬性就不可設成 fmBorderStyleNone。

BorderStyle 會使用 BorderColor 來定義框線的顏色。SpecialEffects 屬性則會使用系統顏色以外的顏色來定義框線的色彩。 在 Windows 作業系統中，系統顏色必須由 [控制台] 中找到 [顯示器] 的 [外觀] 來設定。在 Windows NT 3.51 系統中，系統顏色可在 [控制台] 的 [色彩] 來設定。


BorderStyle 屬性

用來指定表單或控制項之框線的型態。

語法

object.BorderStyle [= fmBorderStyle]

BorderStyle 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmBorderStyle	選擇性引數。指定框線型態。
設定

fmBorderStyle 的設定值有：

常數	值	說明
fmBorderStyleNone	0	控制項不具有可看見的框線。
fmBorderStyleSingle	1	控制項具有單線邊框（預設）。
ComboBox、Frame、Label、ListBox 或 TextBox 的預設值為 0（無）；Image 的預設值為 1（單線）。

請注意

對 Frame 而言，若 SpecialEffect 屬性為 None，BorderStyle 屬性就會被忽略掉。

您可使用 BorderStyle 或 SpecialEffect 來指定控制項的框線，但不能兩者都指定。若您對這兩個屬性的其中之一指定了非零的值，則系統會另一個屬性的值設成 0。例如，若您把 BorderStyle 設為 fmBorderStyleSingle，系統便會將 SpecialEffect 設成 0。若您把 SpecialEffect 設為非零的值，系統便會將 BorderStyle 設成 0。

BorderStyle 會以 BorderColor 來定義其框線的色彩。


BoundColumn 屬性

指定一個多欄 ComboBox 或 ListBox 的資料來源。

語法

object.BoundColumn [= Variant]

BoundColumn 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Variant	選擇性引數。表如何選取 BoundColumn 值。
設定

Variant 的設定值有：

值	說明
0	指定控制項的 ListIndex 屬性值。
1 或以上	從某欄位指定值給控制項。使用此屬性時會由 1 起算（預設）。
請注意

當使用者由多欄 ListBox 或 ComboBox 中選擇一列時，BoundColumn 屬性可用來識別要以此列的哪一個項目做為控制項的值。例如，若每列有 8 個項目且 BoundColumn 為 3，則系統會以所選取列的第三個項目，來做為物件的值。

您可使用 BoundColumn 與 TextColumn 屬性，來顯示一組資料，但另外再放置相關的值。TextColumn 可指示 ComboBox 或 ListBox 欄位中的資料；BoundColumn 可指示控制項欄位的相關資料值。例如，您可設定一個多欄 ListBox 中一欄含有假日名稱，而第二欄含有日期，若要顯示假日名稱，可指定第一個欄位給 TextColumn，若要儲存假日的日期，可指定第二個欄位給 BoundColumn。

若控制項連結到一個資料來源，BoundColumn 指定的欄位值會被存放於 ControlSource 屬性指定的資料來源。

ListIndex 值可用來得知所選的是第幾列。例如，若您想知道指定項目所在的列，可設定 BoundColumn 為 0，以便將選取的列數指定為控制項的值。若您正引用被改過內容的清單，須確定取得的值並非是先前所存的值。

Column、List 與ListIndex 屬性均由 0 起算。也就是說，第一個項目的值為 0；第二個為 1，以此類推。這代表若 BoundColumn 為 3，則您可能存取到 Column(2) 中的值。


BoundValue 屬性

當控制項取得駐點時，所包含控制項的值。

語法

object.BoundValue [= Variant]

BoundValue 屬性的語法具有下列幾項單元：

單元	說明
object	必要的引數。一個物件。
Variant	選擇性引數。控制項目前的狀態或內容。
設定

控制項	說明
CheckBox	用來指示項目是否被選取的整數值。
	Null   用來指示項目在 null 狀態，並非被選取及清除。
	-1   True. 用來指示項目被選取。
	0   False.用來指示項目被清除。
OptionButton	同 CheckBox.
ToggleButton	同 CheckBox.
ScrollBar	用來指示 Max 及 Min 屬性的整數值。
SpinButton	同 ScrollBar.
ComboBox, ListBox	在 BoundColumn 中目前所選取的行數。
CommandButton	皆為 False。
MultiPage	用來指示目前所在 page.的整數值。
	第一 page 為 0。最大值不能小於 page.數。
TextBox	編輯區中的文字。
請注意

BoundValue 適用於有駐點的控制項。

BoundValue 的內容與 Value 的屬性兩者是相同的。但當使用者在修改一控制項時，造成其值改變，直到改變結束後BoundValue 的內容與 Value 的屬性將會有所不同。

當使用者改變控制項的值時會發生幾件事。例如，若使用者改變 TextBox 的內容時，會發生下列的情形：

1. 會引發 Change 事件。同時 Value 屬性會包含新內容，而 BoundValue 只包含先前的內容。

2. 會引發 BeforeUpdate 事件。

3. 會引發 AfterUpdate 事件。BoundValue 與 Value 的值會又再次相同且包含新的內容。

BoundValue 不能用於多選取清單方塊中。


Cancel 屬性

傳回或設定一個值，來指示表單上的指令按鈕是否為 Cancel 按鈕。

語法

object.Cancel [= Boolean]

Cancel 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。是否為 Cancel 按鈕。
設定

Boolean 的設定值有：

值	說明
True	CommandButton 為 Cancel 按鈕。
False	CommandButton 不是 Cancel 按鈕（預設）。
請注意

CommandButton或是作用類似指令按鈕的物件，都可用來做為預設的指令按鈕。對 OLE 收納器控制項而言，Cancel 屬性只能提供給做為指令按鈕的物件。

表單上僅有的 CommandButton 可做為 Cancel 按鈕，將指令按鈕的 Cancel 設為 True 會自動將表單中其它物件設為 False。當一個 CommandButton 的 Cancel 屬性為 True 且該表單處於作用中時，使用者若想選取該按鈕，可以直接按下它、按下 ESC，也可以在其擁有駐點時按下 ENTER。

使用 Cancel 可以讓使用者有取消並回到先前狀態的機會。

若表單中提供之動作是無法復原的（如：刪除），您可考慮以 Cancel 按鈕做為該表單的預設按鈕，作法是同時設定 Cancel 與 Default 屬性為 True。


CanPaste 屬性

指定剪貼簿中的內容是否能為物件接受。

語法

object.CanPaste

CanPaste 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。指定是否可執行貼上的動作。
傳回值

CanPaste 屬性的傳回值有：

值	說明
True	滑鼠指標下的物件可接受剪貼簿中的資訊（預設）。
False	滑鼠指標下的物件無法接受剪貼簿中的資訊。
請注意

CanPaste 是唯讀的。

若剪貼簿中的資料格式是目標物件所無法接受的，則 CanPaste 屬性為 False。例如，若您試圖在一個只接受文字的物件中貼上一個點陣圖，CanPaste 就是 False。


CanRedo 屬性

指示最近一次的 [復原] 是否可回復。

語法

object.CanRedo

CanRedo 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。指定是否可取消最近的復原動作。
傳回值

CanRedo 屬性的傳回值有：

值	說明
True	可取消最近的復原動作。
False	不可取消最近的復原動作。
請注意

CanRedo 是唯讀的。

 [重做] 一個動作代表取消一個 [復原] 動作，而非表示重複使用者剛剛的動作。

以下的動作是用來解釋 [復原] 和 [重做] ：

1. 改變一個選項按鈕的設定值。

2. 在一個文字方塊中輸入文字。

3. 按下 [復原]，文字方塊中的文字將會消失。

4. 按下 [復原]，選項按鈕的設定將回到原先的樣子。

5. 按下 [重做]，選項按鈕的設定將再度改變。

6. 按下 [重做]，文字方塊中的文字將再出現。


CanUndo 屬性

指定使用者上一個動作是否可以復原。

語法

object.CanUndo

CanUndo 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。指示最近的使用者動作是否可復原。
傳回值

CanUndo 屬性的傳回值有：

值	說明
True	最近的使用者動作可以復原。
False	最近的使用者動作不可以復原。
請注意

CanUndo 是唯讀的。

許多使用者動作可使用 [復原] 指令來復原。CanUndo 屬性用來表示最近的使用者動作是否可以復原。


Caption 屬性

出現在物件上的修飾文字，一般用來辨識或描述該物件。

語法

object.Caption [= String]

Caption 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。用來做為標題文字的字串運算式。
設定

控制項的預設值是一個以控制項型態為基礎的單一名稱。例如，CommandButton1 是表單中第一個指令按鈕的預設標題。

請注意

標題文字可用來識別或描述一個物件。對按鈕或標籤來說，Caption 屬性可指定出現在控制項中的文字。對 Page 或 Tab 來說，其用來指定出現在頁籤中的文字。

若控制項的標題過長，就會被截掉；若表單在標題列中的標題過長，就會以省略符號顯示標題。

控制項的 ForeColor 屬性可決定標題文字的顏色。

秘訣  若控制項同時具有 Caption 與 AutoSize 屬性，則將 AutoSize 設成 True，可自動將控制項大小調整為能顯示完整的標題。


ClientHeight, ClientLeft, ClientTop, ClientWidth 屬性
ClientHeight、ClientLeft、ClientTop、ClientWidth 屬性

用來定義 TabStrip 中顯示區域的大小與位置。

語法

object.ClientHeight [ =Single]

object.ClientLeft [ =Single]

object.ClientTop [ =Single]

object.ClientWidth [ =Single]

ClientHeight、ClientLeft、ClientTop 與 ClientWidth 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Single	選擇性引數。對 ClientHeight 與 ClientWidth 而言，可以點數指定顯示區域的高度或寬度；對 ClientLeft 與 ClientTop 而言，可以點數指定 TabStrip 之收納器由上緣或左緣算起的距離。
請注意

在執行階段，ClientLeft、ClientTop、ClientHeight，與 ClientWidth 會自動儲存 TabStrip 內部的座標和大小。


Column 屬性

指定 ListBox 或 ComboBox 中一或多個項目。

語法

object.Column( column, row ) [= Variant]

Column 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
column	選擇性引數。範圍由 0 到小於總行數的整數。
row	選擇性引數。範圍由 0 到小於總列數的整數。
Variant	選擇性引數。指定單一值、一整行的值，或二維陣列，以載入到 ListBox 或 ComboBox 中。
設定

若您同時指定列數與行數的值，Column 便會讀寫到某一個項目。

若您只有指定行數的值，Column 屬性便會讀寫到物件的某一行。例如，MyListBox.Column (3) 可讀寫到 MyListBox 的第三行。

Column 會從游標傳回一個 Variant。當內建的指標提供一個值給 Variant (如使用 AddItem 方法)，此值會是一個字串；當外部的指標提供一個值給 Variant，則相關的格式並不會內含在 Variant。

請注意

您可使用 Column 將下拉式清單方塊或清單方塊的內容指定給另一個控制項，例如，您可將一個文字方塊的 ControlSource 屬性設為一個清單方塊第二行的值。

當您引用到下拉式清單方塊或清單方塊中的某一行，而使用者未做選取時，Column 的設定為 Null。您可用 IsNull 函數來檢查此狀況。

您也可利用 Column 來複製整個二維陣列的值給一個控制項。此語法可快速載入一系列的值，而無須以 AddItem 個別載入。

附註  從二維陣列複製資料時，Column 會將陣列的內容轉換給控制項，所以 ListBox1.Column(X, Y) 與 MyArray(Y, X) 會是一樣的。您也可以用 List 來複製陣列但不轉換它。


ColumnCount 屬性

指定下拉式清單方塊或清單方塊的顯示行數。

語法

object.ColumnCount [= Long]

ColumnCount 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。指定顯示的行數。
請注意

若在一個員工列表中設定 ColumnCount 屬性為 3，那麼一行可列出名字，一行列出姓氏，另一行則可列出員工的識別號碼。

若將 ColumnCount 設成 0，顯示的行數便是 0；若設成 -1，便顯示所有的資料行。對一個非資料連結資料來源而言，最多只能有 10 行 (0 到 9)。

您可用 ColumnWidths 屬性來設定控制項中的資料行寬。


ColumnHeads 屬性

顯示清單方塊、下拉式清單方塊及可接受行標頭的物件之單一行。

語法

object.ColumnHeads [= Boolean]

ColumnHeads 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。指定是否顯示資料行標頭。
設定

Boolean 的設定值有：

值	說明
True	顯示資料行標頭。
False	不顯示資料行標頭（預設）。
下拉式清單只有在被下拉時，才會顯示行標頭。

請注意

當系統以第一列的項目作資料行標頭時，其是無法選取的。


ColumnWidths 屬性

指定多行下拉式清單方塊或清單方塊中的各行寬度。

語法

object.ColumnWidths [= String]

ColumnWidths 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。以點數設定欄寬，-1 或空白為預設值，0 代表隱藏。若要使用不同的單位，必須指定單位。大於 0 的值必須由使用者指定欄寬值。
設定

若要分隔資料行項目，可使用分號 (;)，或 Windows [控制台] 之 [國別設定] 中的清單分除字元。

任一個 ColumnWidths 屬性設定都可以是空白的，這代表預設行寬需取決於行數，與下拉式清單方塊或清單方塊的寬度。輸入清單分除字元且不輸入前置值，便可將其設為空白。

若在屬性頁中指定 -1，則在屬性頁中以空白顯示。

為計算欄寬而使 ColumnWidths 空白或 -1 時，則控制項的寬度會平均分割在清單的所有欄位間。若指定欄寬的總和超過控制項的寬度，則清單會向左對齊，而最右邊一個或多個的欄位不會顯示在控制項中。使用者可捲動水平捲軸來顯示最右邊的欄位。

最小行寬為 72 點 (1 英吋)。若產生的欄小於72點時，您必須自行指定欄寬。

除非另外指定，否則資料行寬是以點數為單位。若要指定另一個單位，請在指定其值時，也含入單位。以下的範例便指定了多種行寬的單位，並說明設定寬度 4 英吋，3 個資料行的清單方塊的各種方法：

設定	效果
90;72;90	第一行為 90 點 (1.25 英吋)；第二行為 72 點 (1 英吋)；第三行為 90 點。
6 cm;0;6 cm	第一行為 6 公分；第二行隱藏；第三行為 6 公分。但第三行有一部分是看不到的，所以會有捲軸出現。
1.5 in;0;2.5 in	第一行為 1.5 英吋；第二行隱藏；第三行為 2.5 英吋。
2 in;;2 in	第一行為 2 英吋；第二行為 1 英吋 (預設)；第三行為 2 英吋。但第三行有一半是看不到的，所以會有捲軸出現。
(空白)	三行都一樣寬 (1.33 英吋)。
請注意

在下拉式清單方塊中，系統會在文字方塊部份顯示 TextColumn 屬性指定的資料行內容。


ControlSource 屬性

識別設定或儲存控制項 Value 屬性之資料位置。

語法

object.ControlSource [= String]

ControlSource 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。指定一個工作表儲存格以連結到控制項的 Value 屬性。
請注意

ControlSource 屬性可用來指定引用的儲存格；它不包含儲存的資料。若您改變控制項的 Value 屬性，則會自動地改變所連結的儲存格內容。反之，若您改變所連結儲存格的值，則自動地反映控制項的 Value 屬性。

對 ControlSource 而言，您不能指定其它的控制項；否則，會造成錯誤。

ControlSource 的預設值是空白字串。若 ControlSource 的值包含非空白字串，則其會識別一個儲存格。當控制項載入時，其儲存格的內容會自動地複製給 Value 屬性。

附註  若 Value 屬性為 Null 時，在 ControlSource 所識別的位置將不會出現任何值。


ControlTipText 屬性

指定當使用者將指標移到控制項上方，且未按下滑鼠鍵時所出現的簡短文字。

語法

object.ControlTipText [= String]

ControlTipText 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。使用者將指標移到控制項上方時所出現的簡短文字。
請注意

ControlTipText 屬性可讓您在執行時，給使用者有關控制項的提示。此屬性可在設計階段指定，但只能出現在執行階段。

ControlTipText 的預設值是空字串。當 ControlTipText 被設成空字串時，該控制項就不會有任何提示。


Count 屬性

傳回集合物件中的物件數目。

語法

object.Count

Count 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
請注意

Count 屬性是唯讀的。

請注意集合物件中第一個 page 或 tab 的索引值為 0，第二個是 1，以此類推。例如，MultiPage 的 Pages 集合物件之 Count 預設值為 2。Pages 集合物件之各 page 索引值為 0 與 1。


CurLine 屬性

指定一個控制項的目前行。

語法

object.CurLine [= Long]

CurLine 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。指定一個控制項的目前行。
請注意

控制項的目前行就是指含有插入點的行。其中第一行是以 0 表示。

CurLine 屬性只有在該控制項具有駐點時才有效。


CurTargetX 屬性

用來取得一個多行的 TextBox 或 ComboBox 中插入點的水平位置。

語法

object.CurTargetX

CurTargetX 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。傳回所要的位置，其單位為 0.0001 米。
請注意

此目標位置是相對於控制項的左緣。若該行的長度小於CurTargetX 屬性值，插入點會被置於該行的末端。CurTargetX 的值會在使用者設定插入點或設定 CurX 屬性時改變。CurTargetX 是唯讀的。

此傳回必須在物件具有駐點時才有效。

您可在使用者捲動多行 TextBox 或 ComboBox 時，使用 CurTargetX 及 CurX 來移動插入點。當使用者以捲動物件的方式，移動插入點到另一行時，CurTargetX 可用來指定插入點的位置。若該行的長度大於 CurTargetX，則 CurX 會被重設為此值。否則，CurX 會被設到該行的末端。


CurX 屬性

指定多行 TextBox 或 ComboBox 中目前插入點所在的水平位置。

語法

object.CurX [= Long]

CurX 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。代表目前的位置，其單位為 0.0001 米。
請注意

CurX 屬性適用於多行 TextBox 或 ComboBox。其傳回值只有在物件具有駐點時，才是有效的。

您可在使用者捲動多行 TextBox 或 ComboBox 時，使用 CurTargetX 及 CurX 來移動插入點。當使用者以捲動物件的方式，移動插入點到另一行時，CurTargetX 可用來指定插入點的位置。若該行的長度大於 CurTargetX，則 CurX 會被重設為此值。否則，CurX 會被設到該行的末端。


Cycle 屬性

用來指定使用者離開 Frame 或 Page 上的一個控制項時，所要執行定位的方式。

語法

object.Cycle [= fmCycle]

Cycle 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmCycle	選擇性引數。指定是否包含 Frame 或 MultiPage 中各控制項。
設定

fmCycle 的設定值有：

常數	值	說明
fmCycleAllForms	0	循環 涵蓋表單中的各控制項，以及表單中 Frame 及 MultiPage 裡的各控制項。
fmCycleCurrentForm	2	涵蓋同一個表單，Frame 或 MultiPage 中的各控制項。駐點會一直停留在該表單，Frame 或 MultiPage 中，直到駐點被明確設定到此表單、Frame，或 MultiPage 之外的控制項。
對 Cycle 而言，若指定為非整數值，則會以最接近的整數來代表。

請注意

定位順序用來識別當使用者在一個表單或子表單中定位時，各控制項取得駐點的順序。Cycle 屬性用來決定當使用者依定位順序定位時，所要執行定位的方式。

fmCycleAllForms 設定可在使用者依定位順序定位時，將駐點轉移至表單中下一個 Frame 或 MultiPage 的第一個控制項。

fmCycleCurrentForm 設定可在使用者依定位順序定位時，將駐點轉移至同一個表單、Frame 或 MultiPage 裡的第一個控制項。


Default 屬性

指定表單中的預設指令按鈕。

語法

object.Default [= Boolean]

Default 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。用來指定此指令按鈕是否為預設按鈕。
設定

Boolean 的設定值有：

值	說明
True	這個 CommandButton 是預設按鈕。
False	這個 CommandButton 不是預設按鈕（預設）。
請注意

CommandButton 或可用來做為指令按鈕的物件，都可被設為預設指令按鈕。但只有表單上的物件可做為預設指令按鈕。若將一個物件的 Default 屬性設為 True，同時也會自動把表單上的其它物件設為 False。

當物件的 Default 設為 True 且該表單為作用中的表單時，使用者就可以在其它物件不具有駐點的情況下，以直接按下此物件或按下ENTER 的方式來選取它。除非使用者將駐點移至表單中的另一個指令按鈕，否則各鍵盤事件 (KeyDown、KeyPress，及 KeyUp) 都會傳給此預設指令按鈕。

Default 會由特別用來當作 CommandButtons 的 OLE 收納器控制項提供。

秘訣  若表單中提供之動作是無法復原的（如：刪除），您可考慮以 Cancel 按鈕做為該表單的預設按鈕，作法是同時設定 Cancel 與 Default 屬性為 True。


Delay 屬性

用來指定 SpinButton 或 ScrollBar 中 SpinUp、SpinDown，及 Change 事件的遲滯。

語法

object.Delay [= Long]

Delay 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。事件間的遲滯，單位為毫秒。
請注意

當使用者按住 SpinButton 或 ScrollBar 上的按鈕不放時，Delay 屬性會影響連續性的 SpinUp、SpinDown，及 Change 事件之間的延遲。第一個事件會立即發生，但第二個事件卻會在 Delay 值五倍的時間後才發生。這使得產生單一事件比產生連續的事件還容易。

之後各事件間的間隔便是指定的 Delay 值。

Delay 的預設值為 50 毫秒，這代表物件會在 250 毫秒（5 乘以指定值）後引發第二個事件，接下來都是在 50 毫秒後引發下一個事件。


DragBehavior 屬性

指定系統是否要啟用 TextBox 或 ComboBox 的拖放特性。

語法

object.DragBehavior [= fmDragBehavior]

DragBehavior 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmDragBehavior	選擇性引數。指定是否要啟用拖放特性。
設定

fmDragBehavior 的設定值有：

常數	值	說明
fmDragBehaviorDisabled	0	不能使用拖放動作（預設）。
fmDragBehaviorEnabled	1	使用拖放動作。
請注意

若啟用 DragBehavior 屬性，在文字方塊或下拉式清單方塊拖曳就會啟動選取文字的拖放動作；若不啟用 DragBehavior 則否。

ComboBox 的下拉式部份不支援拖曳動作，所選取的文字清單項目也不支援。

DragBehavior 對於在 ComboBox 中已設定為 fmStyleDropDownList 的 Style 屬性是沒影響的。

附註  您可結合 EnterFieldBehavior 和 DragBehavior 屬性以增加文字方塊的功能。


DrawBuffer 屬性

用來設定在記憶體暫存區中框架邊框的像素點數。

語法

object.DrawBuffer [= value]

DrawBuffer 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一物件名稱。
value	從 16,000 到 最大值為 1,048,576 的像素點數。
請注意

DrawBuffer 屬性可指定一次畫出及顯示重畫的最大像素點數。物件所用的記憶體是依據顯示的螢幕解決方法。若將 DrawBuffer 設定為較大值，則執行效率會較慢。當數個大的影像檔重疊時，則須較大的記憶體暫存區。

可用 [屬性] 視窗來設定 DrawBuffer 值。


DropButtonStyle 屬性

指定用來顯示 ComboBox 中下拉按鈕的符號。

語法

object.DropButtonStyle [= fmDropButtonStyle]

DropButtonStyle 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmDropButtonStyle	選擇性引數。下拉按鈕的外觀。
設定

fmDropButtonStyle 的設定值有：

常數	值	說明
fmDropButtonStylePlain	0	沒有任何符號。
fmDropButtonStyleArrow	1	向下箭頭（預設）。
fmDropButtonStyleEllipsis	2	省略符號（）。
fmDropButtonStyleReduce	3	類似底線般的水平線。
請注意

建議您在顯示項目的清單中設定為 fmDropButtonStyleArrow。若您想將下拉按鈕用於他處，例如顯示對話方塊，可指定 fmDropButtonStyleEllipsis、fmDropButtonStylePlain 或 fmDropButtonStyleReduce，並偵測 DropButtonClick 事件。


Enabled 屬性

指定控制項是否能接收駐點並回應使用者產生的事件。

語法

object.Enabled [= Boolean]

Enabled 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。決定物件是否能夠回應使用者產生的事件。
設定

Boolean 的設定值有：

值	說明
True	控制項能夠接收駐點並回應使用者產生的事件，且能以程式碼控制（預設）。
False	使用者無法以滑鼠、按鍵訊息、快速鍵或對應鍵，與控制項產生互動。該控制項通常只能以程式碼控制。
請注意

利用 Enabled 屬性可以啟用控制項或使其失效。一個失效的控制項，其外觀通常會變暗，反之則否。若控制項有圖形顯示，此圖形也會隨之變暗。

Enabled 配合 Locked 屬性使用可達到以下的效果：

•	若 Enabled 與 Locked 都為 True，則控制項可接收駐點，並在表單中正常顯示（不會變暗），使用者可以複製，但無法編輯控制項中的資料。

•	若 Enabled 為 True 而 Locked 為 False，則控制項可接收駐點，並在表單中正常顯示，使用者可以複製與編輯控制項中的資料。

•	若 Enabled 為 False 而 Locked 為 True，則控制項無法接收駐點，並在表單中以變暗的色彩顯示，使用者不可以複製，也不能編輯控制項中的資料。

•	若 Enabled 與 Locked 都為 False，則控制項無法接收駐點，並在表單中以變暗的色彩顯示，使用者不可以複製，也不能編輯控制項中的資料。

假使必須讓使用者按下按鈕，您可結合 Enabled 與 TabStop 屬性設定，避免使用者使用 TAB 鍵來選取指令按鈕。將 TabStop 設為 False 代碼該指令按鈕無法在定位順序中顯示，然而，若 Enabled 為 True，使用者仍可按下這個指令按鈕，只要KeepFocusOnClick 為 True。

當使用者定位至一個 MultiPage 或 TabStrip 時，其第一個 page 或 tab 就會接收到駐點。若 MultiPage 或 TabStrip 的第一個 page 或 tab 是失效的，則其第一個可啟用的 page 或 tab 就會取得駐點。若 MultiPage 或 TabStrip 中所有的 page 或 tab 都是失效的，則此控制項便是失效的，並無法得駐點。

若一個 Frame 是失效的，則其中所含的控制項就都會是失效的。

按下失效的 ListBox 不會引發 Click 事件。


EnterFieldBehavior 屬性

指定進入 TextBox 或 ComboBox 時的選取動作。

語法

object.EnterFieldBehavior [= fmEnterFieldBehavior]

EnterFieldBehavior 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmEnterFieldBehavior	選擇性引數。代表所要的選取動作。
設定

fmEnterFieldBehavior 的設定值有：

常數	值	說明
fmEnterFieldBehaviorSelectAll	0	當進入控制項時，選取所有編輯區的內容（預設）。
fmEnterFieldBehaviorRecallSelection	1	保持控制項上次作用時的選取範圍。
請注意

EnterFieldBehavior 屬性是在當使用者對控制項定位時，所選取文字的方法；而非在當控制項取得駐點或用 SetFocus 方法的時候。由於 SetFocus，控制項不會被選取，並且在控制項的編輯區中最後一個字元之後會出現插入點。


EnterKeyBehavior 屬性

定義在 TextBox 中按下 ENTER  鍵的效果。

語法

object.EnterKeyBehavior [= Boolean]

EnterKeyBehavior 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。指定按下 ENTER  鍵的效果。
設定

Boolean 的設定值有：

值	說明
True	按下 ENTER 會增加一行。
False	按下 ENTER 鍵會將駐點移至下一個定位順序的物件（預設）。
請注意

EnterKeyBehavior 與 MultiLine 屬性的關係是息息相關的。以上所敘述的值只適用於 MultiLine 為 True 時，若 MultiLine 為 False，則按下 ENTER 鍵只會將駐點移至下一個定位順序的控制項，而不論 EnterKeyBehavior 的值為何。

按下 CTRL+ENTER 的效果也取決於 MultiLine 的值，若 MultiLine 為 True，則按下 CTRL+ENTER 會新增一行，而不論 EnterKeyBehavior 的值；若 MultiLine 為 False，那麼按下 CTRL+ENTER 就沒有效果了。


ForeColor 屬性

指定物件的前景顏色。

語法

object.ForeColor [= Long]

ForeColor 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。一個用來指定物件前景顏色的值或常數。
設定

您可使用任何可代表正確顏色的整數值；您也可以使用 RGB 函數來指定顏色。其紅、綠、藍三元素的值都是介於 0 到 255 的整數。例如，您可用整數值 4966415 來指定藍綠色，或是以紅、綠、藍三元素 15、200、75 來指定。

請注意

使用 ForeColor 屬性可使控制項變得易於閱讀或顯示特別的意義。例如，若一個文字方塊用來顯示股價，您可在股價下跌時改變其顏色。

對 ScrollBar 或 SpinButton 來說，ForeColor 可用來設定其箭號的色彩。對 Frame 來說，ForeColor 可用來改變其標題的顏色。對 Font 物件來說，ForeColor 可決定文字的顏色。


GroupName 屬性
GroupName Property

建造一個共通地獨特 OptionButton 控制項的群組

Syntax

object.GroupName [= String]

GroupName 屬性的語法具有下列幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。包含 OptionButton 的群組名稱。群組中的所有按鈕設定相同。預設值為空白字串。
請注意

建造一個共通地獨特 OptionButton 控制項，在表單的 Frame 中可放按鈕，或是可用 GroupName 屬性。根據下列的原因，使用 GroupName 是較有效率的：

•	對每一群組而言，並不須包含 Frame。因此，在表單中減少控制項的數目，來增進執行效率及縮減表單的大小。

•	設計可較為彈性。若用 Frame 來建造一個群組，所有按鈕必須在 Frame 中。且若有一個以上的群組，則每一群組必須要有一個 Frame。

•	無論如何，若用 GroupName 來建造群組，則在表單中任何地方皆可包含選項按鈕。如您想要一個以上的群組，則每一群組須設定唯一的名稱；而在表單中任一地方仍可放置個別的控制項。

•	您可利用透明的背景來建造群組，可增進表單的外觀。Frame 不是透明的控制項。

不管用何種方法來建造按鈕群組，按下群組中一個按鈕則可設定其它同群組中的按鈕為 False。所有在單一收納器的同 GroupName 中選項按鈕是共通地、獨特的。兩個收納器中可使相同的群組名稱，但寧可建造兩個群組（各自在不同的收納器），也不要一個群組包含兩個收納器。

舉例來說，假設您的表單包含些選項按鈕，及在 MultiPage 中也包含選項按鈕。在 MultiPage 及表單中的選項按鈕是兩個不同群組，也互不影響，以致於在 MultiPage 中改變按鈕的設定，是不會影響表單中的按鈕。


Height, Width 屬性
Height、Width 屬性

物件的高度與寬度，單位為點。

語法

object.Height [= Single]

object.Width [= Single]

Height 及 Width 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Single	選擇性引數。用來指定物件大小的數值運算式。
請注意

當您移動或調整物件大小時，Height 和 Width 屬性會自動更新。Height 或 Width 屬性會存放新的高度及寬度；而 OldHeight 或 OldWidth 屬性則存放舊的高度及寬度。若您指定的 Left 或 Top 屬性小於零，則控制項的某些部分就無法在表單中顯示出來。

當您在表單上移動控制項時，若在移動中也調整了該控制項的大小，Height 或 Width 就會改變；Left 及 Top 屬性則用來反映控制項新的位置與表單邊緣的距離。

Height 或 Width 必須大於等於零。在多數系統中，通常其範圍在 0 到 +32,767 之間，超過的話則需視系統而定。


HelpContextID 屬性

指定自訂的 Microsoft Windows 說明主題給某個控制項。

語法

object.HelpContextID [= Long]

HelpContextID 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。一個用來指定說明主題代碼 的正整數。零就代表該物件不具說明主題 ( 預設 )。
請注意

由 HelpContextID 屬性指定的說明主題在使用者執行程式後就可選用，只要選取或將駐點移動到該控制項並按下 F1，就可顯示此說明主題。

HelpContextID 屬性會引用到您建立的自訂說明檔，在 Visual Basic 中，自訂說明檔屬於專案的一個屬性。


HideSelection 屬性

指定控制項失去駐點時，其原本被選取的文字是否仍保持反白顯示。

語法

object.HideSelection [= Boolean]

HideSelection 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數，指一個物件。
Boolean	選擇性引數。控制項失去駐點時，其原本被選取的文字是否仍保持反白顯示。
設定

Boolean 的設定值有：

值	說明
True	選取的文字不以反白顯示 ( 預設 )。
False	選取的文字仍以反白顯示。
請注意

當另一個表單或對話方塊取得駐點時，您可使用 HideSelection 屬性讓原程序中選取的文字仍以反白顯示。


IMEMode 屬性

指定一個控制項在執行階段的輸入法 (IME) 模式。這個屬性只適用於遠東（Far East）所寫的應用程式，其它應用程則忽略。

語法

object.IMEMode [= fmIMEMode]

IMEMode 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmIMEMode	選擇性引數。指定輸入法 ( IME ) 模式。
設定

fmIMEMode 的設定值有：

常數	值	說明
fmIMEModeNoOp	0	不控制 IME ( 預設 )。
fmIMEModeOn	1	啟動 IME。
fmIMEModeOff	2	不啟動 IME，英文模式。
fmIMEModeDisable	3	不啟動 IME，使用者無法以鍵盤啟動 IME。
fmIMEModeHiragana	4	以 Full-width Hiragana 模式啟動 IME。
fmIMEModeKatakanaDbl	5	以 Full-width Katakana 模式啟動 IME。
fmIMEModeKatakanaSng	6	以 Half-width Katakana 模式啟動 IME。
fmIMEModeAlphaDbl	7	以 Full-width Alphanumeric 模式啟動 IME。
fmIMEModeAlphaSng	8	以 Half-width Alphanumeric 模式啟動 IME。
fmIMEModeNoOp 代表當控制項取得駐點時，不改變 IME；否則當控制項在執行階段取得駐點時，將IME 改成 IMEMode 屬性指定的模式。

請注意

設定 IME 模式有兩個方法。一個是透過 IME 的工具列；另一個是使用 IMEMode 屬性。此屬性可讓您使用程式碼動態改變 IME 模式。

以下為您解釋 IME 工具列與 IMEMode 的關係。先假設表單上有 TextBox1 與 CheckBox1，TextBox1.IMEMode 已設為 0，而CheckBox1.IMEMode 為 1。設計階段時，您已使用工具列把 IME 模式設成 2。

在執行該表單時，IME 模式一開始是 2，當按下 TextBox1 時，IME 模式並不會改變，因此控制項的 IMEMode 是 0，當按下 CheckBox1 時，IME 模式會變成 1，因此控制項的 IMEMode 是 1。若再按下 TextBox1，IME 模式仍為 1 ( IMEMode 為 0，故 IME 保持原值 )。

不過，您也可以改變 IMEMode。例如，假設您按下 CheckBox1 且 IME 為模式 1，如同 CheckBox 的 IMEMode 所定義的。若您接著使用 IME 工具列將 IME 模式改為 3，則以後當您再按下此控制項時，IME 模式就都會是 3 了。


Index 屬性

Tab 物件在 Tabs 集合物件中的位置，或 Page 物件在 Pages 集合物件中的位置。

語法

object.Index [= Integer]

Index 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Integer	選擇性引數。目前選取之 Tab 物件的索引值。
請注意

Index 屬性用來指定頁籤的順序。改變 Index 就會改變 Pages 在 MultiPage 或 Tabs 在 TabStrip 中的位置。第一個頁籤的索引值為 0；第二個為 1；以此類推。

在 MultiPage 中，Page 的 Index 就如同 Tab；而在 TabStrip 中，Index 就僅能引用頁籤。


InsideHeight, InsideWidth 屬性
InsideHeight、InsideWidth 屬性

InsideHeight 會傳回表單從屬工作區的高度；InsideWidth 則會傳回表單從屬區域的寬度。單位均是點。

語法

object.InsideHeight

object.InsideWidth

InsideHeight 及 InsideWidth 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Single	選擇性引數。內部的寬度或高度。
請注意

InsideHeight 及 InsideWidth 是唯讀的。若含有捲軸，則傳回值不會包含捲軸。


IntegralHeight 屬性

指示 ListBox、ComboBox 或 TextBox 是否在清單中顯示文字所有的行。

語法

object.IntegralHeight [= Boolean]

IntegralHeight 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。是否在清單中顯示文字所有的行。
設定

Boolean 的設定值有：

值	說明
True	清單自行調整大小以顯示完整的項目 ( 預設 )。
False	即使項目太長，清單也不自動調整大小。
請注意

IntegralHeight 屬性關係到清單的高度，而 AutoSize 屬性則關係到清單的寬度。

若 IntegralHeight 為 True，清單方塊或下拉式清單方塊會在需要時，自動改變大小。若為 False，清單則會保持一定的大小；若清單的項目高於有效空間時，則不會顯示出其項目。


TakeFocusOnClick 屬性

指定控制項在被按下時，是否取得駐點。

語法

object.TakeFocusOnClick [= Boolean]

TakeFocusOnClick 屬性的語法具下列幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。控制項在被按下時，是否取得駐點。
設定

Boolean 的設定值有：

值	說明
True	控制項在被按下時會取得駐點 ( 預設 )。
False	控制項在被按下時不會取得駐點。
請注意

TakeFocusOnClick 屬性只影響到使用者按下控制項時。若使用者以定位的方式移動到控制項，則 TakeFocusOnClick 的設定值並無影響。

使用此屬性可執行某動作，並不讓駐點轉移到別的控制項。例如，若表單含有一個 TextBox 及一個用來檢查拼字的 CommandButton，您會希望可選取 TextBox 中的文字，然後按下 CommandButton 執行拼字檢查，但不使駐點離開 TextBox。於是您可將 CommandButton 的 TakeFocusOnClick 屬性設為 False。


KeepScrollBarsVisible 屬性

指定捲軸在沒用到時是否要顯示出來。

語法

object.KeepScrollBarsVisible [= fmScrollBars]

KeepScrollBarsVisible 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmScrollBars	選擇性引數。是否要顯示捲軸。
設定

fmScrollBars 的設定值有：

常數	值	說明
fmScrollBarsNone	0	不顯示。
fmScrollBarsHorizontal	1	顯示水平捲軸。
fmScrollBarsVertical	2	顯示垂直捲軸。
fmScrollBarsBoth	3	顯示水平與垂直捲軸 ( 預設 )。
請注意

若 Page 物件或表單中能顯示所有控制項，捲軸便不是必要的。KeepScrollBarsVisible 屬性就是用來決定，在此情況下是否顯示捲軸。

若捲軸不必要時仍顯示它，其會填滿整個高度及寬度。


LargeChange 屬性

指定當使用者在捲動方塊與捲軸箭號間按下時的移動量。

語法

object.LargeChange [= Long]

LargeChange 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。整數，用來指定 Value 屬性的改變量。
請注意

LargeChange 屬性只適用於 ScrollBar；不適用於其它控制項，例如 TextBox 及下拉 ComboBox 的捲軸列中

LargeChange 屬性就是當使用者在捲動方塊與捲軸箭號間按下時，ScrollBar's Value 屬性的改變量。移動的方向則需視使用者按下的地方。例如，在水平的 ScrollBar，按下捲動方塊左方可讓其向左移；在垂直 ScrollBar，按下捲動方塊上方可讓其向上移。

LargeChange 並沒有單位，正確的 LargeChange 設定值應為整數。建議範圍應在 -32,767 到 +32,767 之間，且必須在 ScrollBar 的 Max 及 Min 屬性間。


LayoutEffect 屬性

指定改變配置的期間，控制項是否移動。

語法

object.LayoutEffect

LayoutEffect 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmLayoutEffect	選擇性引數。控制項是否移動。
傳回值

fmLayoutEffect 引數具有以下的值：

常數	值	說明
fmLayoutEffectNone	0	控制項不移動。
fmLayoutEffectInitiate	1	控制項會移動。
請注意

LayoutEffect 屬性是唯讀的，並且只有在 Layout 事件發生時才能選用，而 Layout 事件則可在 Layout 引數為 True 時，用 Move 方法引發。

當您改變控制項的 Left、Top、Height，或 Width 屬性時，Layout 事件不能引發。

Layout 事件會設定移動時所有相關控制項的 LayoutEffect。例如，若您移動一組控制項，每個控制項的 LayoutEffect 都會重設。


Left, Top 屬性
Left、Top 屬性

控制項與其所在表單的左、上角之距離。

語法

object.Left [= Single]

object.Top [= Single]

Left 及 Top 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Single	選擇性引數。指定物件座標的數值運算式。
設定

若將 Left 或 Top 屬性設為 0，就會使控制項置於其收納器的左、上角。

請注意

對多數系統而言，Left 及 Top 的值在 -32,767 與 +32,767 之間，其它值是否有效就得視系統而定了。對 ComboBox 而言，Left 與 Top 適用於文字部分，而非清單部分。移動或控制項時，其 Left 設定會自動更新至屬性。顯示表單時，控制項的水平、垂直位置均取決於 Left 或 Top 設定。


LineCount 屬性

傳回 TextBox 或 ComboBox 中的文字行數。

語法

object.LineCount

LineCount 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	傳回值。指定控制項中的文字行數。
請注意

LineCount 屬性是唯讀的。傳回值介於 0 到小於 LineCount 1 的值。

附註 ComboBox 只能有一行。


List 屬性

傳回或設定 ListBox 或 ComboBox 的清單輸入項。

語法

object.List( row, column ) [= Variant]

List 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
row	必要的引數。介於 0 到小於輸入項數目 1 的整數。
column	必要的引數。介於 0 到小於行數 1 的整數。
Variant	選擇性引數。ListBox 或 ComboBox 中指定輸入項的內容。
設定

這些設定均由 0 起算。也就是，第一列為 0，第一行為 0，第二行或列為 1，以此類推。

請注意

List 屬性與 ListCount 和 ListIndex 屬性有關。您可使用 List 來存取清單項目。清單就是一個 Variant 陣列；清單中各項目都有一個行數和列數。

在最初狀態中，ComboBox 和 ListBox 的清單都是空的。

附註  若要指定 ComboBox 或 ListBox 中要顯示的項目，可使用 AddItem 方法；而用 RemoveItem 方法則可移除。

您可用 List 複製一整個二維陣列的值到控制項中。這可讓您快速載入一些選項，而無需使用 AddItem 個別加入。


ListCount 屬性

傳回控制項中清單項目的數目。

語法

object.ListCount

ListCount 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	傳回值。控制項中清單項目的數目，預設為零 (0)。
請注意

ListCount 屬性是唯讀的，ListCount 代表可捲動的列數，而 ListRows 唯可顯示的最大值。ListCount 會比 ListIndex 屬性的最大值大 1，因索引值是由 0 起算，若無選取項目，ListCount 為 0，ListIndex 為 -1。


ListIndex 屬性

用來識別 ListBox 或 ComboBox 中的目前選取項目。

語法

object.ListIndex [= Variant]

ListIndex 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Variant	選擇性引數。控制項中的目前選取項目。
請注意

ListIndex 屬性含有清單中選取列的索引值。ListIndex 的範圍由 -1 到清單中總列數減 1 (即，ListCount - 1)。若無選取列，ListIndex 會傳回 -1。當使用者選取 ListBox 或 ComboBox 的一列，系統會自行設定 ListIndex 值。第一列的 ListIndex 值為 0，第二列為 1，以此類推。

附註  若使用 MultiSelect 屬性建立可多重選取的 ListBox，ListBox 的 Selected 屬性 (而非 ListIndex 屬性) 可用來指定選取列。Selected 屬性為一個其值對應到 ListBox 列中之值的陣列。對清單中各行而言，若被選取，則 Selected 為 True；否則為 False。在一個可多重選取的 ListBox 中，ListIndex 會傳回具有駐點之列的索引值，而非被選取的列。

當控制項的 BoundColumn 屬性為 0 時，ListIndex 也是可選用的。若 BoundColumn 為 0，清單方塊或下拉式清單方塊所連結的資料來源，會含有與 ListIndex 相同的清單索引值。


ListRows 屬性

指定清單中顯示列數的最大值。

語法

object.ListRows [= Long]

ListRows 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。指定清單中顯示列數最大值的整數，預設為 8。
請注意

若清單中的總項目數超過 ListRows 屬性，清單方塊或下拉式清單方塊右邊便會出現一個捲軸。


ListStyle 屬性

指定 ListBox 或 ComboBox 的外觀。

語法

object.ListStyle [= fmListStyle]

ListStyle 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmListStyle	選擇性引數。指清單的外觀。
設定

fmListStyle 的設定值有：

常數	值	說明
fmListStylePlain	0	正常的清單方塊，選取項目以反白顯示。
fmListStyleOption	1	對多重選取清單 ( 預設 )，以選項按鈕或核取方塊顯示。當使用者在群組中選取某項目時，也會同時選取相對的選項按鈕；而其它項目則會被取消。
請注意

ListStyle 屬性可讓您改變 ListBox 或 ComboBox 的外觀。若設定值不是 fmListStylePlain，就可將控制項的內容以一組獨立項目的方式呈現，並可顯示各項目是否有被選取。

若控制項只接受單一選取 ( MultiSelect 屬性為 fmMultiSelectSingle )，使用者就僅能按下一個按鈕；若控制項接受多重選取，使用者就能按下多個按鈕。


ListWidth 屬性

指定 ComboBox 清單的寬度。

語法

object.ListWidth [= Variant]

ListWidth 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Variant	選擇性引數。清單的寬度，當值為 0 時，使清單的寬度與 ComboBox 同。預設是跟控制項的文字部分一樣寬。
請注意

若您想顯示多行清單，就必須輸入一個可容納所有行的寬度。

秘訣  設計下拉式清單方塊時，請確定預留的空間足以顯示資料與垂直捲軸。


Locked 屬性

指定一個控制項是否可編輯。

語法

object.Locked [= Boolean]

Locked 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。控制項是否可編輯。
設定

Boolean 的設定值有：

值	說明
True	無法編輯。
False	可以編輯 (預設)。
請注意

當控制項被鎖住並啟用時，仍可引發事件與接收駐點。


MatchEntry 屬性

傳回或設定一個值，用來決定 ListBox 或 ComboBox 如何按照使用者輸入的資料來搜尋清單。

語法

object.MatchEntry [= fmMatchEntry]

MatchEntry 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmMatchEntry	選擇性引數。用來判斷輸入項是否符合的規則。
設定

fmMatchEntry 的設定值有：

常數	值	說明
fmMatchEntryFirstLetter	0	基本比較，控制項會找出開頭為該輸入字元的項目。全部啟始字重複地鍵入相同的字來循環。
fmMatchEntryComplete	1	延伸比較，找出符合所有輸入字元的項目 (預設)。
fmMatchEntryNone	2	不比較。
請注意

MatchEntry 屬性可用來從 ListBox 或 ComboBox 的 TextColumn 屬性中搜尋輸入項。

該控制項會從由 TextColumn 識別的資料行中，搜尋符合使用者輸入資料的項目。當找到符合者時，該列就會被選取，其內容也會顯示出來，且其 BoundColumn 屬性值也會變成控制項的值。若符合項目是明確的，搜尋符合者時會引發 Click 事件。

當使用者輸入的一系列字元完全符合清單中的項目時，控制項就會引發 Click 事件。在輸入時，輸入項會被拿來與清單中的目前列和下一列比較。

在 Microsoft Forms，您不必管清單是否經過排序。這表示控制項會依照項目在清單中的順序，來搜尋符合的項目。例如，以下的情況中，輸入 "abc" 或 "bc" 都會引發 Click 事件：

abcde

bcdef

abcxyz

bchij

請注意，符合的項目不見得只有一個；無論如何，若輸入項與所符合的項目差異太大時，則會引發 Click 事件。


MatchFound 屬性

代表使用者輸入到下拉式清單方塊的文字，是否符合清單中的任何項目。

語法

object.MatchFound

MatchFound 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。是否有符合的資料錄。
傳回值

MatchFound 屬性的傳回值有：

值	說明
True	Value 屬性的內容符合清單中的一個項目。
False	Value 的內容不符合清單中的任何項目( 預設 )。
請注意

MatchFound 屬性是唯讀的，當 MatchEntry 屬性為 fmMatchEntryNone 時是不適用的。


MatchRequired 屬性

指定 ComboBox 文字部分的輸入值，是否要符合清單中既有的一個項目。使用者雖可輸入不符合的值，但不可在未輸入符合值的情況下離開控制項。

語法

object.MatchRequired [= Boolean]

MatchRequired 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。輸入值是否要符合清單中既有的一個項目。
設定

Boolean 的設定值有：

值	說明
True	輸入文字需符合清單中既有的一個項目。
False	輸入文字不需符合清單中既有的項目 (預設)。
請注意

若 MatchRequired 屬性為 True，使用者就必須輸入符合清單中既有項目的文字，才可離開 ComboBox。藉著要求使用者選取既有的項目，可以使 MatchRequired 維護清單的完整性。

附註  並非所有收納器都強制此屬性。


Max, Min 屬性
Max、Min 屬性

指定 ScrollBar 或 SpinButton 之 Value 屬性的最大與最小值。

語法

object.Max [= Long]

object.Min [= Long]

Max 及 Min 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。用來指定 Value 屬性最大或最小值的數值運算式。
請注意

按下 SpinButton 或移動 ScrollBar 的捲動方塊就會改變控制項的 Value 屬性。

Max 屬性值對應到垂直 ScrollBar 的最低點或水平 ScrollBar 的最右端；Min 屬性值對應到垂直 ScrollBar 的最高點或水平 ScrollBar 的最左端。

此屬性值可為任何整數，建議值為 -32,767 到 +32,767，預設值為 1。

附註  Min 與 Max 主要是用來做為 ScrollBar 中位置的參考點，而非相對值。也就是說，Max 可小於 Min，在這種情況下，往 Max ( 下端 ) 移動代表 Value 減小；往 Min ( 上端 ) 移動代表 Value 變大。


MaxLength 屬性

指定使用者在 TextBox 或 ComboBox 中可輸入的最大字元數。

語法

object.MaxLength [= Long]

MaxLength 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。整數，代表可輸入的最大字元數。
請注意

將 MaxLength 屬性設為 0 表示沒有限制，僅取決於記憶體的大小。


MouseIcon 屬性

指定自訂圖示給一個物件。

語法

object.MouseIcon = LoadPicture( pathname )

MouseIcon 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
pathname	必要的引數。字串運算式，用來指定圖示檔的路徑與檔名。
請注意

MouseIcon 屬性只在 MousePointer 屬性為 99 時才有效，這用來表示使用者移動指標到物件上方時的指標模樣。

若要指定滑鼠指標，您可指定 MouseIcon 屬性，也可以使用 LoadPicture 方法從檔案中載入圖形。


MousePointer 屬性

指定使用者移動指標到物件上方時所顯示的指標類型。

語法

object.MousePointer [= fmMousePointer]

MousePointer 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmMousePointer	選擇性引數。滑鼠指標的形狀。
設定

fmMousePointer 的設定值有：

常數	值	說明
fmMousePointerDefault	0	標準指標，決定於物件本身 ( 預設 )。
fmMousePointerArrow	1	箭號。
fmMousePointerCross	2	十字型。
fmMousePointerIBeam	3	I - 型。
fmMousePointerSizeNESW	6	東北與西南向的雙箭號。
fmMousePointerSizeNS	7	南北向的雙箭號。
fmMousePointerSizeNWSE	8	西北與東南向的雙箭號。
fmMousePointerSizeWE	9	東西向的雙箭號。
fmMousePointerUpArrow	10	向上箭號。
fmMousePointerHourglass	11	沙漏狀。
fmMousePointerNoDrop	12	禁止符號 ( 內有斜線的圓形 )，表示此處不是正確的放下目標。
fmMousePointerAppStarting	13	有沙漏的箭號。
fmMousePointerHelp	14	有問號的箭號。
fmMousePointerSizeAll	15	調整所有大小 ( 東西南北向的箭號 )。
fmMousePointerCustom	99	使用 MouseIcon 屬性所指定的。
請注意

使用 MousePointer 屬性可指示使用者，目前程式正處於何種狀態下。例如，沙漏 (11) 可指示使用者稍待片刻。

某些圖示取決於系統設定，如 [佈景主題] 中的設定。


MultiLine 屬性

指定控制項是否接受並顯示多行文字。

語法

object.MultiLine [= Boolean]

MultiLine 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。指定控制項是否支援多行文字。
設定

Boolean 的設定值有：

值	說明
True	文字可跨行顯示 ( 預設 )。
False	文字不可跨行顯示。
請注意

多行 TextBox 可接受強制換行，並依照字數調整行數。若有需要，還可有垂直捲軸。

單行 TextBox 可接受強制換行，也不能有垂直捲軸。

單行控制項會忽視掉 WordWrap 屬性。

附註   若在多行的 TextBox 中改變 MultiLine 屬性為 False，則所有在 TextBox 中的字元將會合併為一行。介於文字列中的非列印字元將會顯示。


MultiRow 屬性

指定頁籤文字是否可多於一列。

語法

object.MultiRow [= Boolean]

MultiRow 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。決定頁籤文字是否可多於一列。
設定

Boolean 的設定值有：

值	說明
True	可多於一列。
False	不可多於一列 ( 預設 )。
請注意

頁籤寬度與數目會決定列數，改變控制項大小也會改變列數。開發者可調整控制項大小，以便顯示完整的頁籤。若 MultiRow 屬性為 False，且頁籤寬度大於控制項寬度，就會造成文字被截斷。

若 MultiRow 為 False，且文字被截斷，TabStrip 上會出現一個小捲軸，讓使用者可以捲動。


MultiSelect 屬性

指定物件是否接受多重選取。

語法

object.MultiSelect [= fmMultiSelect]

MultiSelect 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmMultiSelect	選擇性引數。決定物件的選取模式。
設定

fmMultiSelect 的設定值有：

常數	值	說明
fmMultiSelectSingle	0	只能選取一個項目 ( 預設 )。
fmMultiSelectSimple	1	按下空白鍵或按下滑鼠鍵，可以選取、取消選取清單中的項目。
fmMultiSelectExtended	2	按下 SHIFT 並按下滑鼠鍵，或按下 SHIFT 並按下一個方向鍵，可選取一個範圍內的所有項目。按下 CTRL 並按下滑鼠鍵，可選取或取消選取一個項目。
請注意

當 MultiSelect 屬性為 Extended 或 Simple，您必須使用清單方塊的 Selected 屬性來決定選取項目。也許控制項的 Value 屬性永遠是 Null。

ListIndex 屬性會傳回目前鍵盤駐點所在列的索引值。


Name 屬性

指定控制項、物件的名稱；或指定相關於 Font 物件的字型名稱。

語法

對字型來說
Font.Name [= String]

對其它控制項和物件來說
object.Name [= String]

Name 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。指定給字型或控制項的名稱。
設定

指定字串給 Name 的準則，例如名稱最大長度，依應用程式而有所不同。

請注意

對物件而言，Name 的預設值為其類別名稱加上一個整數。例如，表單中第一個 TextBox 的預設名稱為 TextBox1；第二個 TextBox 的預設名稱為 TextBox2。

您可從控制項的屬性表來改變 Name 屬性，若控制項是在執行階段新增的，可用程式碼來改變。若控制項是在設計階段新增的，您就無法在執行階段改變其 Name 屬性。

同一表單上，在設計階段新增的控制項都必須有唯一的名稱。

對 Font 物件而言，Name 是使用在控制項、物件或表單之文字部分的字型。字型顯示在螢幕的外觀或許會與列印時不同，這完全取決於您的電腦與印表機。若您選取的字型是系統無法顯示或並未安裝的，Windows 就會以最接近的來代替。


Object 屬性

在同名的狀況下，決定使用自訂控制項的屬性或方法，而不使用標準的屬性或方法。

語法

object.Object[.property |.method]

Object 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。由 Microsoft Forms 工具列中所加入控制項的名稱。
property	選擇性引數。控制項的屬性，其與 Microsoft Forms 中的標準屬性同名。
method	選擇性引數。與 Microsoft Forms 方法中的標準方法同名的方法。
請注意

Object 是唯讀的。

若在 Microsoft Forms 工具列中加入一個新的控制項，其控制項的屬性或方法可能會與標準Microsoft Forms 屬性或方法同名。Object 屬性可讓您推翻預設的狀況，改用自訂控制項的屬性或方法。


OldHeight, OldWidth 屬性
OldHeight、OldWidth 屬性

傳回控制項先前的高度或寬度，單位為點。

語法

object.OldHeight

object.OldWidth

OldHeight 及 OldWidth 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Single	選擇性引數。傳回先前的高度或寬度。
請注意

OldHeight 與 OldWidth 是唯讀的。

OldHeight 與 OldWidth 屬性會在您移動或調整控制項後自動更新。若您改變控制項的大小，則 Height 與 Width 屬性用來儲存新值；而 OldHeight 與 OldWidth 用來儲存先前的值。

這些屬性都無法用於 Layout 事件中。


OldLeft, OldTop 屬性
OldLeft、OldTop 屬性

傳回控制項先前位置與表單左緣或上緣之間的距離，單位為點。

語法

object.OldLeft

object.OldTop

OldLeft 及 OldTop 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Single	選擇性引數。傳回先前左緣或上緣的座標。
請注意

OldLeft 與 OldTop 是唯讀的。

OldLeft 與 OldTop 屬性會在您移動或調整控制項後自動更新。若您改變控制項的大小，則 Left 與 Top 屬性用來儲存從控制項至收納器的左緣的新值；而 OldLeft 與 OldTop 用來儲存先前的值。

OldLeft 與 OldTop 都無法用於 Layout 事件中。


Orientation 屬性

指定 SpinButton 或 ScrollBar 為垂直或水平。

語法

object.Orientation [= fmOrientation]

Orientation 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmOrientation	選擇性引數。控制項的方向。
設定

fmOrientation 的設定值有：

常數	值	說明
fmOrientationAuto	-1	依控制項的面積自動決定 ( 預設 )。
fmOrientationVertical	0	垂直。
fmOrientationHorizontal	1	水平。
請注意

若指定為自動，則控制項的寬度與高度將決定其為垂直或水平。例如，若控制項寬度大於高度，其為水平；若高度大於寬度，則為垂直。


Parent 屬性

傳回含有指定控制項、物件或集合物件的表單、物件或集合物件之名稱。

語法

object.Parent

Parent 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Object	選擇性引數。指定父物件。
請注意

Parent 屬性是唯讀的。

使用 Parent 屬性可存取父物件的屬性、方法或其它控制項。

此屬性在一個可以物件為引數的應用程式中是很有用的。例如，您可傳遞一個控制項變數給模組中的一般程序，並使用 Parent 來存取父表單。


PasswordChar 屬性

指定是否以其它字元的預留位置方式來顯示，而不顯示實際上輸入 TextBox 的字元。

語法

object.PasswordChar [= String]

PasswordChar 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。字串運算式，用來指定要顯示的字元。
請注意

您可使用 PasswordChar 屬性來保護重要的資訊，例如密碼等。PasswordChar 值所指定的字元，就是用來取代使用者輸入控制項中的字元。若不指定，則就會顯示使用者實際輸入的字元。


Picture 屬性

指定要顯示在物件中的點陣圖。

語法

object.Picture = LoadPicture( pathname )

Picture 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
pathname	必要的引數。圖形檔的完整路徑。
請注意

設計表單時，您可使用控制項的屬性頁來指定 Picture 屬性；而執行階段時，您就必須使用 LoadPicture 來指定點陣圖給 Picture。

若要移除指定給控制項的圖形，可按下屬性頁中的 Picture 屬性並按下 DELETE；若按下 BACKSPACE 無法移除圖形。

附註  對有標題的控制項而言，使用 PicturePosition 屬性可指定要將圖片顯示在物件何處，而使用 PictureSizeMode 屬性則可決定圖片如何填滿物件。

透明圖片的外觀有時會模糊的。若您不喜觀透明的外觀，可選擇以不透明的圖片顯示。Image 與 MultiPage 也支援不透明的影像圖。


PictureAlignment 屬性

用來指定背景圖片在表單中的位置。

語法

object.PictureAlignment [= fmPictureAlignment]

PictureAlignment 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmPictureAlignment	選擇性引數。指定背景圖片在表單中的對齊方式。
設定

fmPictureAlignment 的設定值有：

常數	值	說明
fmPictureAlignmentTopLeft	0	左上角。
fmPictureAlignmentTopRight	1	右上角。
fmPictureAlignmentCenter	2	表單或 Page 的中央。
fmPictureAlignmentBottomLeft	3	左下角。
fmPictureAlignmentBottomRight	4	右下角。
請注意

PictureAlignment 屬性用來決定圖片哪一個角落，要跟其收納器相同的部位重疊。

例如，將 PictureAlignment 設為 fmPictureAlignmentTopLeft 圖片的左上角要與收納器的左上角重疊。將 PictureAlignment 設為 fmPictureAlignmentCenter 可將圖片置於其收納器的中央。

若您要將圖片填滿整個控制項或收納器，則 PIctureAlignment 的值會影響鋪放的方式。例如，若 PictureAlignment 設為 fmPictureAlignmentUpperLeft，則第一張圖會放在收納器獲控制項的左上角，之後由左至右放置。若 PictureAlignment 設為 fmPictureAlignmentCenter，則第一張圖會放在收納器獲控制項的中央，之後向左向右推進，而填滿整個控制項或收納器。

附註  將 PictureSizeMode 屬性設為 fmSizeModeStretch 可忽視 PictureAlignment 的設定。當 PictureSizeMode 為 fmSizeModeStretch 時，圖片就會自行調整大小，以填滿整個控制項或收納器。


PicturePosition 屬性

指定圖片相對於標題的位置。

語法

object.PicturePosition [= fmPicturePosition]

PicturePosition 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmPicturePosition	選擇性引數。圖片在其收納器中的對齊方式。
設定

fmPicturePosition 的設定值有：

常數	值	說明
fmPicturePositionLeftTop	0	圖片顯示在標題左方，標題對齊圖片上緣。
fmPicturePositionLeftCenter	1	圖片顯示在標題左方，標題對齊圖片中央。
fmPicturePositionLeftBottom	2	圖片顯示在標題左方，標題對齊圖片下緣。
fmPicturePositionRightTop	3	圖片顯示在標題右方，標題對齊圖片上緣。
fmPicturePositionRightCenter	4	圖片顯示在標題右方，標題對齊圖片中央。
fmPicturePositionRightBottom	5	圖片顯示在標題右方，標題對齊圖片下緣。
fmPicturePositionAboveLeft	6	圖片顯示在標題上方，標題對齊圖片左緣。
fmPicturePositionAboveCenter	7	圖片顯示在標題上方，標題對齊圖片中央（預設）。
fmPicturePositionAboveRight	8	圖片顯示在標題上方，標題對齊圖片右緣。
fmPicturePositionBelowLeft	9	圖片顯示在標題下方，標題對齊圖片左緣。
fmPicturePositionBelowCenter	10	圖片顯示在標題下方，標題對齊圖片中央。
fmPicturePositionBelowRight	11	圖片顯示在標題下方，標題對齊圖片右緣。
fmPicturePositionCenter	12	圖片顯示在控制項中央，標題對齊圖片的方式，則為水平置中且垂直對齊上緣。
請注意

將圖片與標題視為一體，則置於控制項的中央。若無標題，則圖片的位置是相對於控制項中央。

此屬性在 Picture 屬性未指定圖片時，會被忽略掉。


PictureSizeMode 屬性

指定在控制項、表單或活頁中如何顯示背景圖片。

語法

object.PictureSizeMode [= fmPictureSizeMode]

PictureSizeMode 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmPictureSizeMode	選擇性引數。若圖片與其所在的表單、活頁大小不同時如何顯示。
設定

fmPictureSizeMode 的設定值有：

常數	值	說明
fmPictureSizeModeClip	0	裁掉圖片多出來的部分 ( 預設 )。
fmPictureSizeModeStretch	1	調整圖片大小以填滿表單或活頁，此設定會造成圖片的水平與垂直方向比例被扭曲。
fmPictureSizeModeZoom	3	放大圖片，但不扭曲圖片水平與垂直方向的比例。
請注意

fmPictureSizeModeClip 可讓圖片保持原有的樣貌，但若表單或分頁小於圖片，此設定就會造成圖片的部分被截掉。

fmPictureSizeModeStretch 與 fmPictureSizeModeZoom 設定都會放大圖片，但 fmPictureSizeModeStretch 會造成圖片比例被扭曲掉。而 fmPictureSizeModeZoom 則會同時在水平與垂直方向放大，直到某一方碰到收納器或控制項的邊緣，若先碰到水平邊緣，則垂直方向的多餘部分就保留空白；若先碰到垂直邊緣，則水平方向的多餘部分就保留空白。


PictureTiling 屬性

可讓您在表單或活頁中鋪放一個圖片。

語法

object.PictureTiling [= Boolean]

PictureTiling 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。圖片是否重複顯示，填滿整個背景。
設定

Boolean 的設定值有：

值	說明
True	圖片重複顯示以填滿整個背景。
False	圖片不重複顯示 ( 預設 )。
請注意

若圖片小於表單或活頁，則您可令其重複顯示以填滿整個背景。

填滿的方式取決於 PictureAlignment 及 PictureSizeMode 屬性的設定。例如，若 PictureAlignment 設為 fmPictureAlignmentTopLeft，則圖片由左上角開始重複出現，直到最後無法放下為止；若 PictureSizeMode 設為 fmPictureSizeModeClip，則圖片會重複出現，填滿整個表單或分頁，最後放不下的圖片則會被截掉。


ProportionalThumb 屬性

指定捲動方塊的大小要跟捲動區域成比例，或者保持固定。

語法

object.ProportionalThumb [= Boolean]

ProportionalThumb 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。捲動方塊的大小是否跟捲動區域成比例。
設定

Boolean 的設定值有：

值	說明
True	捲動方塊的大小跟捲動區域成比例 ( 預設 )。
False	捲動方塊保持固定大小。
請注意

若捲動方塊成比例出現，則其比例即為物件在視窗中可看到的大小百分比。例如，若物件的百分之 75 是可看見的，則捲動方塊就會佔掉捲軸捲動區域中的四分之三。

若捲動方塊是固定大小的，則系統會依據捲軸的長寬來決定其大小。


RowSource 屬性

指定 ComboBox 或 ListBox 清單的來源。

語法

object.RowSource [= String]

RowSource 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。ComboBox 或 ListBox 清單的來源。
請注意

RowSource 屬性也可以是 Microsoft Excel 工作表中的某個範圍。


ScrollBars 屬性

指定控制項、表單或活頁是否有垂直捲軸、水平捲軸或兩者都有。

語法

object.ScrollBars [= fmScrollBars]

ScrollBars 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmScrollBars	選擇性引數。捲軸要顯示在何處。
設定

fmScrollBars 的設定值有：

常數	值	說明
fmScrollBarsNone	0	不顯示捲軸。
fmScrollBarsHorizontal	1	顯示水平捲軸。
fmScrollBarsVertical	2	顯示垂直捲軸。
fmScrollBarsBoth	3	顯示水平與垂直捲軸 ( 預設 )。
請注意

若 KeepScrollBarsVisible 屬性為 True，則表單或活頁上捲軸的就一定會出現，無論內容是否有超過物件的邊界。

捲軸會強制捲動方塊出現在其可看見的區域，若有需要，您也可以改變捲動位置以顯示整個捲軸。捲軸的區域會隨 ScrollBars 屬性改變，有可能是捲動的大小改變，也可能是可看見的區域改變。

若捲軸是隱藏的，則您可任意設定其捲動大小。就算是負值或大於捲動大小的值也可以。

對單行控制項而言，您可使用 ScrollBars 及 AutoSize 屬性來顯示一個水平捲軸。而捲軸是隱藏或顯示，就需根據以下規則：

1. 當 ScrollBars 為 fmScrollBarsNone 時，不顯示任何捲軸。

2. 當 ScrollBars 為 fmScrollBarsHorizontal 或 fmScrollBarsBoth 時，控制項會在文字過長且有剩餘空間時，顯示水平捲軸。

3. 當 AutoSize 為 True 時，控制項會自行放大來放置捲軸，除非其大小已達最大值。

對多行 TextBox 而言，您可使用 ScrollBars、WordWrap 與 AutoSize 屬性來顯示捲軸，而捲軸是隱藏或顯示，就需根據以下規則：

1. 當 ScrollBars 為 fmScrollBarsNone 時，不顯示任何捲軸。

2. 當 ScrollBars 為 fmScrollBarsVertical 或 fmScrollBarsBoth 時，控制項會在文字過長且有剩餘空間時，顯示垂直捲軸。

3. 當 WordWrap 為 True 時，多行控制項將不會顯示水平捲軸。事實上，大多數的多行控制項都不會使用水平捲軸。

4. 在以下情況同時發生時，多行控制項可顯示水平捲軸：

•	文字長度大於編輯區域。

•	控制項具有啟用中的水平捲軸。

•	編輯區域下方有多餘的空間來置放水平捲軸。

•	WordWrap 屬性為 False。


ScrollHeight, ScrollWidth 屬性
ScrollHeight、ScrollWidth 屬性

指定表單、控制項或分頁中捲軸可移動的高度，單位為點。

語法

object.ScrollHeight [= Single]

object.ScrollWidth [= Single]

ScrollHeight 及 ScrollWidth 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Single	選擇性引數。可捲動區域的高度或寬度。


ScrollLeft, ScrollTop 屬性
ScrollLeft、ScrollTop 屬性

指定表單、控制項或活頁的上緣或左緣距離，單位為點。

語法

object.ScrollLeft [= Single]

object.ScrollTop [= Single]

ScrollLeft 及 ScrollTop 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Single	選擇性引數。與表單的距離。
請注意

最小值是零，最大值在 ScrollWidth 屬性與 Width 屬性之間。


Selected 屬性

傳回 ListBox 中項目的選取狀態。

語法

object.Selected( index ) [= Boolean]

Selected 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
index	必要的引數。整數，介於 0 與一個小於清單項目數的數值。
Boolean	選擇性引數。代表一個項目是否被選取。
設定

Boolean 的設定值有：

值	說明
True	項目被選取。
False	項目未被選取。
請注意

Selected 屬性在使用者可多重選取時是很有用的，您可由此得知多重選取清單中被選取的項目。您也可以在程式碼中，使用此屬性來選取或取消選取清單中的項目。

此屬性的預設值取決於 ListBox 的目前選取狀態。

在單一選取清單中，建議您使用 Value 或 ListIndex 屬性來取得或設定項目。在此情況下，ListIndex 會傳回選取項目的索引值。然而，在多重選取的情況下，ListIndex 會傳回駐點所在的列索引值，而不論該列是否真的被選取。

當清單方塊的 MultiSelect 屬性為 None 時，只有一個項目的 Selected 屬性可以是 True。

若輸入的索引值超出範圍，雖不會出現錯誤訊息，但也不會對清單中任何項目產生效用。


SelectedItem 屬性

傳回目前選取的 Tab 或 Page 物件。

語法

object.SelectedItem

SelectedItem 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。一個正確的 TabStrip 或 MultiPage。
Object	選擇性引數。 在指定的 TabStrip 或 MultiPage 中，目前選取的 Tab 或 Page。
請注意

SelectedItem 是唯讀的。使用 SelectedItem 屬性可在程式中控制目前選取的 Tab 或 Page 物件。例如，您可用 SelectedItem 來指定 Tab 或 Page 物件的屬性值。


SelectionMargin 屬性

指定使用者是否可按下文字左邊的區域，來選取一整行文字。

語法

object.SelectionMargin [= Boolean]

SelectionMargin 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。是否可選取一整行文字。
設定

Boolean 的設定值有：

值	說明
True	可選取一整行文字 ( 預設 )。
False	不可選取一整行文字。
請注意

若 SelectionMargin 屬性為 True，選取區會在控制項編輯區的左方佔掉一小塊地方；若為 False 則會儲存文字。

若 SelectionMargin 屬性為 True，列印時也會把選取區列印出來。


SelLength 屬性

文字方塊或下拉式清單方塊的文字部分中被選取的字元數。

語法

object.SelLength [= Long]

SelLength 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。用來指定字元數的數值運算式。SelLength 及 SelStart 的範圍需在 0 到 ComboBox 或 TextBox 的總字元數之間。
請注意

SelLength 屬性即使在控制項不具有駐點時，也是有效的；但若將 SelLength 設為小於零的值，則會產生生錯誤；而若將 SelLength 設為大於總字元數的值，會等於控制項中的總字元數。

附註  改變 SelStart 屬性值將會取消控制項中目前選取的部分，重新在字串中放置插入點，並將 SelLength 設為零。

其預設值 0，表示目前並無選取文字。


SelStart 屬性

代表從何處開始選取文字，若無選取文字，則代表插入點。

語法

object.SelStart [= Long]

SelStart 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。用來指定選取文字之起始位置的數值運算式。 SelLength 及 SelStart 的範圍需在 0 到 ComboBox 或 TextBox 的總字元數之間。預設值為零。
請注意

The SelStart 屬性 屬性即使在控制項不具有駐點時，也是有效的；但若將 SelStart 設為小於零的值，則會產生生錯誤；而若將 SelStart 設為大於總字元數的值，會等於控制項中的總字元數。

改變 SelStart 屬性值將會取消控制項中目前選取的部分，重新在字串中放置插入點，並將 SelLength 設為零。


SelText 屬性

傳回或設定控制項的選取文字。

語法

object.SelText [= String]

SelText 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。含有選取文字的字串運算式。
請注意

控制項的編輯區中若無選取的字元，則 SelText 屬性會傳回長度為 0 的字串。此屬性無論控制項是否具有駐點，都是有效的。


ShowDropButtonWhen 屬性

指定何時要顯示 ComboBox 或 TextBox 的下拉按鈕。

語法

object.ShowDropButtonWhen [= fmShowDropButtonWhen]

ShowDropButtonWhen 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmShowDropButtonWhen	選擇性引數。顯示下拉按鈕的狀況。
設定

fmShowDropButtonWhen 的設定值有：

常數	值	說明
fmShowDropButtonWhenNever	0	任何狀況下都不顯示。
fmShowDropButtonWhenFocus	1	當控制項具有駐點時顯示下拉按鈕。
fmShowDropButtonWhenAlways	2	任何時候都顯示下拉按鈕 ( 預設 )。
ComboBox 的預設值為 fmShowDropButtonWhenAlways；TextBox 的預設值為 fmShowDropButtonWhenNever。


SmallChange 屬性

指定使用者按下 ScrollBar 或 SpinButton 之捲動箭頭時的移動量。

語法

object.SmallChange [= Long]

SmallChange 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。指定 Value 屬性的改變量。
請注意

SmallChange 屬性值並沒有單位。

此屬性可以設為任何整數。建議的範圍由 -32,767 到 +32,767，預設值是 1。


SpecialEffect 屬性

指定物件顯示的外觀。

語法

在 CheckBox、OptionButton、ToggleButton 中
object.SpecialEffect [= fmButtonEffect]

在其它控制項中
object.SpecialEffect [= fmSpecialEffect]

SpecialEffect 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmButtonEffect	選擇性引數。CheckBox、OptionButton 或 ToggleButton 的外觀。
fmSpecialEffect	選擇性引數。CheckBox、OptionButton 或 ToggleButton 以外物件的外觀。
設定

fmSpecialEffect 的設定值有：

常數	值	說明
fmSpecialEffectFlat	0	正常，僅以框線或不同的色彩來區分。Image 及 Label 的預設值都是如此，也可適用於其他控制項。
fmSpecialEffectRaised	1	物件上緣及左緣反白，下緣及右緣有陰影。不可用於核取方塊或選項按鈕。
fmSpecialEffectSunken	2	物件上緣及左緣有陰影，下緣及右緣反白，控制項周圍以框線與表單區隔開。CheckBox 及 OptionButton 的預設值都是如此，也可適用於其他控制項 ( 預設 )。
fmSpecialEffectEtched	3	控制項周圍以框線與表單區隔開。不可用於核取方塊或選項按鈕。
fmSpecialEffectBump	6	物件下緣及右緣有突起，上緣及左緣則正常顯示。不可用於核取方塊或選項按鈕。
Frame 的預設值是 Sunken。

請注意，只有 Flat 與 Sunken ( 0 與 2 ) 可用於 CheckBox、OptionButton，及 ToggleButton。其它控制項則沒有任何限制。

請注意

您可使用 SpecialEffect 或 BorderStyle 屬性來指定控制項的邊框，但不能兩者並用。此兩個屬性若有一個被設為非零值，則系統會自動將另一個設為零。例如，若 SpecialEffect 被設為 fmSpecialEffectRaised，則系統會將 BorderStyle 設為零 ( fmBorderStyleNone )。

在 Frame 中，若 SpecialEffect 為 fmSpecialEffectFlat，則 BorderStyle 會被忽略。

SpecialEffect 會使用系統顏色來定義框線。

附註   雖然在 ToggleButton 中 SpecialEffect 屬性為存在的，但無法使用。所以您不能在 ToggleButton 中設定或傳回此屬性的值。


Style 屬性

在 ComboBox 中，用來設定使用者選取或設定控制項值的方式。在 MultiPage 及 TabStrip 中，則用來指定控制項之 Tabs 的樣式。

語法

在 ComboBox 中
object.Style [= fmStyle]

在活頁（MultiPage）與 TabStrip 中
object.Style [= fmTabStyle]

Style 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmStyle	選擇性引數。設定使用者選取或設定 ComboBox 值的方式。
fmTabStyle	選擇性引數。指定 MultiPage 或 TabStrip 之頁籤的樣式。
設定

fmStyle 的設定值有：

常數	值	說明
fmStyleDropDownCombo	0	ComboBox 為一個下拉式清單。 使用者或從下拉式清單中選取可在文字區輸入 ( 預設 )。
fmStyleDropDownList	2	ComboBox 為一個清單方塊，使用者須從清單中選取。
fmTabStyle 的設定值有：

常數	值	說明
fmTabStyleTabs	0	在頁籤列顯示頁籤 ( 預設 )。
fmTabStyleButtons	1	在頁籤列顯示按鈕。
fmTabStyleNone	2	不顯示頁籤列。


TabFixedHeight, TabFixedWidth 屬性
TabFixedHeight、TabFixedWidth 屬性

設定或傳回頁籤的固定高度或長度，單位為點。

語法

object.TabFixedHeight [= Single]

object.TabFixedWidth [= Single]

TabFixedHeight 及 TabFixedWidth 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Single	選擇性引數。TabStrip 或 MultiPage 之頁籤的高度或寬度。
設定

若值為 0，則頁籤的寬度會根據其內容做自動調整，且每個頁籤的寬度相等。

若值大於 0，則所有頁籤的寬度會址定為此屬性。

請注意

最小值為 4 點。


TabIndex 屬性

指定單一物件在表單中的定位順序。

語法

object.TabIndex [= Integer]

TabIndex 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Integer	選擇性引數。從 0 到小於表單中控制項總數 1 的整數值。. 若 TabIndex 小於 0 就會產生錯誤。若您指定 TabIndex 的值大於最大索引值，則系統會將其重設為最大值。
請注意

定位順序中，第一個物件的索引值是 0。


TabKeyBehavior 屬性

決定編輯區中是否可使用定位字元。

語法

object.TabKeyBehavior [= Boolean]

TabKeyBehavior 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。按下 TAB 的效果。
設定

Boolean 的設定值有：

值	說明
True	按下 TAB 會在編輯區插入一個定位字元。
False	按下 TAB 會將駐點移到下個定位順序的物件 ( 預設 )。
請注意

TabKeyBehavior 與 MultiLine 屬性是息息相關的。以上所說的只有在 MultiLine 為 True 時才有效，若 MultiLine 為 False，按下 TAB 時就會將駐點移到下一個定位順序的控制項，而無論 TabKeyBehavior 的值為何。

按下 CTRL+TAB also 的效果也需視 MultiLine 的值而定。若 MultiLine 為 True，按下 CTRL+TAB 就會新增一行，而無論 TabKeyBehavior 的值為何，若 MultiLine 為 False，按下 CTRL+TAB 並沒有效果。


TabOrientation 屬性

指定 MultiPage 或 TabStrip 中頁籤的位置。

語法

object.TabOrientation [= fmTabOrientation]

TabOrientation 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmTabOrientation	選擇性引數。 頁籤所出現的位置。
設定

fmTabOrientation 的設定值有：

常數	值	說明
fmTabOrientationTop	0	頁籤顯示在控制項的頂端 ( 預設 )。
fmTabOrientationBottom	1	頁籤顯示在控制項的底端。
fmTabOrientationLeft	2	頁籤顯示在控制項的左側。
fmTabOrientationRight	3	頁籤顯示在控制項的右側。
請注意

若您使用 TrueType 字型，當 TabOrientation 屬性設為 fmTabOrientationLeft 或 fmTabOrientationRight 時也會跟著旋轉。使用其它字型則否。


TabStop 屬性

指定物件是否可在定位順序指到時，接受駐點。

語法

object.TabStop [= Boolean]

TabStop 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。物件是否為定位停駐點。
設定

Boolean 的設定值有：

值	說明
True	物件可以是定位停駐點 ( 預設 )。
False	物件被定位到的時候，將駐點傳給下一個控制，雖然物件的定位順序仍如同 TabIndex 屬性所指定的。


Tag 屬性

儲存有關物件的額外資訊。

語法

object.Tag [= String]

Tag 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。用來識別物件的字串運算式。預設值是長度為零的字串 ("")。
請注意

使用 Tag 屬性可指定一些識別用的字串給一個物件，而不會影響到其它屬性的設定。

例如，您可使用 Tag 來識別一些做為變數傳遞某個程序的表單或控制項。


Text 屬性

傳回或設定 TextBox 或 ComboBox 編輯區中的文字，或 ListBox 中的選取項目。

語法

object.Text [= String]

Text 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
String	選擇性引數。用來指定文字的字串運算式，預設值是長度為零的字串 ("")。
請注意

對 TextBox 而言，Text 屬性與 Value 屬性的值是相同的。

對 ComboBox 而言，可使用 Text 來更改控制項的值。若 Text 值與清單的項目相符合，則 ListIndex 屬性值（目前行的索引）設為與 Text 同；若不符合，則 ListIndex 設為 -1。

對 ListBox 而言， Text 值須與清單的項目相符合；若不符合，則會造成錯誤。

您不能使用 Text 來改變在 ComboBox 或 ListBox 中項目的值；但可利用 Column 或 List 屬性來改變。

ForeColor 屬性可決定文字的色彩。


TextAlign 屬性

指定文字在控制項中的對齊方式。

語法

object.TextAlign [= fmTextAlign]

TextAlign 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmTextAlign	選擇性引數。文字在控制項中的對齊方式。
設定

fmTextAlign 的設定值有：

常數	值	說明
fmTextAlignLeft	1	第一個字對齊控制項編輯區的左緣 ( 預設 )。
fmTextAlignCenter	2	文字對齊控制項編輯區的中央。
fmTextAlignRight	3	最後一個字對齊控制項編輯區的右緣
請注意

對 ComboBox 而言，TextAlign 屬性只會影響到編輯區；此屬性對清單中的文字並沒有作用。對標籤而言，TextAlign 則可決定標題的對齊方式。


TextColumn 屬性

識別 ComboBox 或 ListBox 中要顯示的資料行。

語法

object.TextColumn [= Variant]

TextColumn 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Variant	選擇性引數。要顯示的資料行。
設定

TextColumn 屬性值的範圍可由 -1 到資料行數。第一行的 TextColumn 值為 1，第二行為 2，以此類推。將 TextColumn 設為 0 會顯示 ListIndex 值，將 TextColumn 設為 -1 會顯示 ColumnWidths 值大於 0 的第一行。

請注意

當使用者從 ComboBox 或 ListBox 選取一列時，TextColumn 所引用的此資料行會儲存在 Text 屬性中。例如，您可設定一個多行的 ListBox，其包含第一行為例假日的名稱及第二行為例假日的日期。為顯示例假日的名稱給使用者看，指定 TextColumn 為第一行。為儲存例假日的日期，則指定 BoundColumn 為第二行。

當 ComboBox 的 Text 屬性改變時 ( 例如使用者在控制項中輸入資料時 )，新的文字將被拿來與 TextColumn 所指定的資料行做比較。


TextLength 屬性

傳回 TextBox 或 ComboBox 編輯區中文字的長度，單位為字元。

語法

object.TextLength

TextLength 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	編輯區的字元數。
請注意

TextLength 屬性是唯讀的。對多行 TextBox 而言，TextLength 包括了 LF ( 換行 ) 與 CR ( 復位 ) 字元。


TopIndex 屬性

設定並傳回出現在清單最上方的項目。

語法

object.TopIndex [= Variant]

TopIndex 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Variant	選擇性引數。清單最上方之項目的數字，預設為 0，或清單中的第一個項目。
設定

若清單是空的或不顯示，則傳回 -1。


TransitionEffect 屬性

指定由某頁改變到另一頁時的視覺效果。

語法

object.TransitionEffect [= fmTransitionEffect]

TransitionEffect 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmTransitionEffect	選擇性引數。轉移頁籤時的效果。
設定

fmTransitionEffect 的設定值有：

常數	值	說明
fmTransitionEffectNone	0	沒有特殊效果 ( 預設 )。
fmTransitionEffectCoverUp	1	新的一頁由下至上蓋住舊的那頁。
fmTransitionEffectCoverRightUp	2	新的一頁由左下至右上蓋住舊的那頁。
fmTransitionEffectCoverRight	3	新的一頁由左至右蓋住舊的那頁。
fmTransitionEffectCoverRightDown	4	新的一頁由左上至右下蓋住舊的那頁。
fmTransitionEffectCoverDown	5	新的一頁由上至下蓋住舊的那頁。
fmTransitionEffectCoverLeftDown	6	新的一頁由右上至左下蓋住舊的那頁。
fmTransitionEffectCoverLeft	7	新的一頁由右至左蓋住舊的那頁。
fmTransitionEffectCoverLeftUp	8	新的一頁由右下至左上蓋住舊的那頁。
fmTransitionEffectPushUp	9	新的一頁由下至上擠掉舊的那頁。
fmTransitionEffectPushRight	10	新的一頁由左至右擠掉舊的那頁。
fmTransitionEffectPushDown	11	新的一頁由上至下擠掉舊的那頁。
fmTransitionEffectPushLeft	12	新的一頁由右至左擠掉舊的那頁。
請注意

使用 TransitionPeriod 屬性可指定轉移瞬間的效果。


TransitionPeriod 屬性

指定轉移效果的持續時間，單位為千分之一秒。

語法

object.TransitionPeriod [= Long]

TransitionPeriod 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Long	選擇性引數。完成由某頁轉移至另一頁的時間
請注意

此屬性可為 0 到 10000。設定 TransitionPeriod 屬性為零代表取消轉移的效果；設定 TransitionPeriod 為 10000 則會使轉移的時間持續 10 秒。


TripleState 屬性

決定使用者是否可由使用者介面指定一個 Yes/No 控制項的狀態為 Nulll。

語法

object.TripleState [= Boolean]

TripleState 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。控制項是否支援 Null 狀態。
設定

Boolean 的設定值有：

值	說明
True	按下按鈕可選擇三種狀態。
False	按鈕只能用來選擇 True 與 False ( 預設 )。
請注意

雖然 TripleState 屬性存在於 OptionButton 中，但此屬性是無效的。不管 TripleState 值為何，您不能透過使用者介面來設定控制項為 Null。

若 TripleState 屬性為 True，使用者就能選擇 Null、True，與 False。空值會使按鈕呈現陰影。

若 TripleState 為 False，使用者就只能選擇 True 或 False。

一控制項設為 Null 不會引發 Click 事件。

無論此屬性設定為何，您都可透過程式碼指定 Null 給 CheckBox 或 ToggleButton，使其呈現陰影。


Value 屬性

指定一個控制項的狀態或內容。

語法

object.Value [= Variant]

Value 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Variant	選擇性引數。控制項的狀態或內容。
設定

控制項	說明
CheckBox	指定項目是否被選取的整數：
	Null   代表控制項處於既非被選取，也非被清除的狀態。
	-1   True，代表項目被選取。
	0   False，代表項目被清除。
OptionButton	同 CheckBox。
ToggleButton	同 CheckBox。
ScrollBar	介於 Max 與 Min 屬性值的整數。
SpinButton	同 ScrollBar。
ComboBox, ListBox	目前選取列的 BoundColumn 值。
CommandButton	皆為 False。
MultiPage	用來代表目前作用中頁籤的整數。
	零 (0) 表示第一頁，最大值小於總頁數 1。
TextBox	編輯區的文字。
請注意

對 CommandButton 而言，將 Value 屬性設為 True 就會引發按鈕的 Click 事件.

對 ComboBox 而言，改變 Value 並不會改變 BoundColumn。若要新增或刪除 ComboBox 中的項目，您可使用 AddItem 或 RemoveItem 方法.

Value 無法用於多重選取的清單方塊。


VerticalScrollbarSide 屬性

指定是否在表單或活頁控制項的左側或右側顯示垂直捲軸。

語法

object.VerticalScrollbarSide [= fmVerticalScrollbarSide]

VerticalScrollbarSide 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
fmVerticalScrollbarSide	選擇性引數。捲軸的位置。
設定

fmVerticalScrollbarSide 的設定值有：

常數	值	說明
fmVerticalScrollbarSideRight	0	右側 ( 預設 )。
fmVerticalScrollBarSideLeft	1	左側。
請注意

在表單所處環境為必須讓使用者由右至左閱讀的時候，VerticalScrollBarSide 屬性就非常有用。


Visible 屬性

指定物件是可看見或隱藏的。

語法

object.Visible [= Boolean]

Visible 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。物件是可看見或隱藏的。
設定

Boolean 的設定值有：

值	說明
True	可看見 ( 預設 )。
False	隱藏。
請注意

使用 Visible 屬性可讓控制項隱藏起來。例如，您就可使用一個隱藏表單中的控制項，做為查詢的準則。

所有的控制項在設計階段皆為可看見的。


WordWrap 屬性

指定控制項的內容在行末是否自動換行。

語法

object.WordWrap [= Boolean]

WordWrap 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Boolean	選擇性引數。控制項的內容在行末是否自動換行。
設定

Boolean 的設定值有：

值	說明
True	自動換行 ( 預設 )。
False	不換行。
請注意

對支援 MultiLine 屬性的控制項而言，WordWrap 屬性是非常重要的；但若 MultiLine 為 False，WordWrap 就會被忽略掉。


Zoom 屬性

指定一個物件在顯示時的大小要改變為多少。

語法

object.Zoom [= Integer]

Zoom 屬性的語法具有以下幾個單元：

單元	說明
object	必要的引數。指一個物件。
Integer	選擇性引數。顯示影像時要增加或減小多小百分比。
請注意

Zoom 屬性值可用來指定顯示影像時要增加或減小多小百分比，其值可為 10 到 400。此百分比是根據物件的原始大小；因此，400 表示表示把影像放大為原來的四倍 ( 或百分之四百 )，10 表示表示把影像縮小為十分之一 ( 或百分之十 )。


Item 方法範例

下列範例使用 Item 方法來存取 Controls 及 Pages 集合物件的個別成員。範例中設計了兩個選項按鈕，讓使用者決定要存取 Controls 集合物件或是 MultiPage，以及一個 CommandButton讓使用者作確認。最後還有一個 Label，用來顯示控制項的名稱。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 一個 CommandButton，命名為 CommandButton1。

2. 一個 Label，命名為 Label1。

3. 兩個 OptionButton，分別命名為 OptionButton1 及 OptionButton2。

4. 一個 MultiPage，命名為 MultiPage1。

Dim MyControl As Object

Dim ControlsIndex As Integer

Private Sub CommandButton1_Click()

    If OptionButton1.Value = True Then

        'Process Controls collection for UserForm

        Set MyControl = Controls.Item(ControlsIndex)

        Label1.Caption = MyControl.Name

        'Prepare index for next control on Userform

        ControlsIndex = ControlsIndex + 1

        If ControlsIndex >= Controls.Count Then

            ControlsIndex = 0

        End If

    ElseIf OptionButton2.Value = True Then

        'Process Current Page of Pages collection

        Set MyControl = MultiPage1.Pages.Item(MultiPage1.Value)

        Label1.Caption = MyControl.Name

    End If

End Sub

Private Sub UserForm_Initialize()

    ControlsIndex = 0

    'TabsIndex = 0

    OptionButton1.Caption = "Controls Collection"

    OptionButton2.Caption = "Pages Collection"

    OptionButton1.Value = True

    CommandButton1.Caption = "Get Member Name"

End Sub


Object 屬性範例

假設有一個新的控制項，它的 Top 屬性和 Microsoft Forms 標準的 Top 不相同。此時兩個屬性都可以使用到，但用不同的語法：

1. control.Top 是使用到標準的 Top 屬性。

2. control.Object.Top 則是使用到新控制項自訂的 Top 屬性。


TabStop 屬性範例

下列範例示範如何使用 TabStop 屬性來控制哪些控制項可以允許使用者藉由按下 TAB 鍵來將駐點移到該控制項上。範程式中使用者可以利用 TAB 來讓駐點在表單內的控制項之間移轉，也可以按下 ToggleButton（切換按鈕）來改變 CommandButton1 的 TabStop 屬性值。如果 TabStop 屬性值是 False，則 CommandButton1 無法經由按下 TAB 鍵的方式來得到駐點，而必需用按下滑鼠左鍵的方式才行。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 一個 CommandButton，命名為 CommandButton1。

2. 一個 ToggleButton，命名為 ToggleButton1。

3. 一兩個其它控制項，如 OptionButton（選項按鈕）或 ListBox（清單方塊）。

Private Sub CommandButton1_Click()

    MsgBox "Clicked CommandButton1."

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1 = True Then

        CommandButton1.TabStop = True

        ToggleButton1.Caption = "TabStop On"

    Else

        CommandButton1.TabStop = False

        ToggleButton1.Caption = "TabStop Off"

    End If

End Sub

Private Sub UserForm_Initialize()

    CommandButton1.Caption = "Show Message"

    ToggleButton1.Caption = "TabStop On"

    ToggleButton1.Value = True

    ToggleButton1.Width = 90

End Sub


TakeFocusOnClick 屬性範例

下列範例示範如何使用 TakeFocusOnClick 屬性來控制一個 CommandButton（指令按鈕），在使用者按下該按鈕時是否也同時將駐點轉移到該按鈕上。範例的操作方法是由使用者先在別的控制項上按一下滑鼠左鍵，再按一下 CommandButton1。如果此時 CommandButton1 的 TakeFocusOnClick 屬性值是 True，則駐點便會隨著轉移到 CommandButton1。程式中還提供一個 ToggleButton（切換按鈕）可以讓使用者改變 TakeFocusOnClick 屬性值。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 一個 CommandButton，命名為 CommandButton1。

2. 一個 ToggleButton，命名為 ToggleButton1。

3. 一兩個其它控制項，如 OptionButton（選項按鈕）或 ListBox（清單方塊）。

Private Sub CommandButton1_Click()

    MsgBox "Watch CommandButton1 to see if it takes the focus."

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1 = True Then

        CommandButton1.TakeFocusOnClick = True

        ToggleButton1.Caption = "TakeFocusOnClick On"

    Else

        CommandButton1.TakeFocusOnClick = False

        ToggleButton1.Caption = "TakeFocusOnClick Off"

    End If

End Sub

Private Sub UserForm_Initialize()

    CommandButton1.Caption = "Show Message"

    ToggleButton1.Caption = "TakeFocusOnClick On"

    ToggleButton1.Value = True

    ToggleButton1.Width = 90

End Sub


MatchEntry 屬性範例

下列範例示範如何使用 MatchEntry 屬性來決定 ComboBox（下拉式清單方塊）及 ListBox（清單方塊）的輸入比對模式。範例中使用者可以利用數個 OptionButton（選項按鈕）來設定比對的方式，並在 ComboBox 的文字區輸入文字來試驗比對結果。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 三個 OptionButton，命名為 OptionButton1 到 OptionButton3。

2. 一個 ComboBox，命名為 ComboBox1。

Private Sub OptionButton1_Click()

    ComboBox1.MatchEntry = fmMatchEntryNone

End Sub

Private Sub OptionButton2_Click()

    ComboBox1.MatchEntry = fmMatchEntryFirstLetter

End Sub

Private Sub OptionButton3_Click()

        ComboBox1.MatchEntry = fmMatchEntryComplete

End Sub

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 1 To 9

        ComboBox1.AddItem "Choice " & i

    Next i

    ComboBox1.AddItem "Chocoholic"

    OptionButton1.Caption = "No matching"

    OptionButton1.Value = True

    OptionButton2.Caption = "Basic matching"

    OptionButton3.Caption = "Extended matching"

End Sub


MatchFound，MatchRequired 屬性範例

下列範例示範如何使用 ComboBox（下拉式清單方塊）的 MatchFound 及 MatchRequired 屬性來做進一步的輸入比對。比對的動作是在 Change 事件中完成的。

範例中，使用者可自行決定是否 ComboBox 文字區內的文字必需完全和其清單中的某個項目一模一樣才算比對成功。使用者可以利用程式中的 CheckBox（核取方塊）來做這項決定，並在 ComboBox 的文字區輸入文字來試驗比對結果。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 一個 ComboBox，命名為 ComboBox1。

2. 一個 CheckBox，命名為 CheckBox1。

Private Sub CheckBox1_Click()

    If CheckBox1.Value = True Then

        ComboBox1.MatchRequired = True

        MsgBox "To move the focus from the ComboBox, you must match an entry in the list or press ESC."

    Else

        ComboBox1.MatchRequired = False

        MsgBox " To move the focus from the ComboBox, just tab to or click another control. Matching is optional."

    End If

End Sub

Private Sub ComboBox1_Change()

    If ComboBox1.MatchRequired = True Then

    'MSForms handles this case automatically

    Else

        If ComboBox1.MatchFound = True Then

            MsgBox "Match Found; matching optional."

        Else

            MsgBox "Match not Found; matching optional."

        End If

    End If

End Sub

Private Sub UserForm_Initialize()

Dim i As Integer

For i = 1 To 9

    ComboBox1.AddItem "Choice " & i

Next i

ComboBox1.AddItem "Chocoholic"

CheckBox1.Caption = "MatchRequired"

CheckBox1.Value = True

End Sub


MultiSelect，Selected 屬性範例

下列範例示範如何使用 MultiSelect 及 Selected 範例來選擇 ListBox（清單方塊）裏的清單選項（單選或複選）。程式中有一個選項按鈕（OptionButton）可供使用者決定清當方塊的選擇模式，並有一 CommandButton（指令按鈕），當使用者按下這個按鈕時，程式會將 ListBox1 裏被使用者選擇到的選項顯示在 ListBox2 之中。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 兩個 ListBox，命名為 ListBox1 及 ListBox2。

2. 一個 CommandButton，命名為 CommandButton1。

3. 三個 OptionButton，命名為 OptionButton1 到 OptionButton3。

Dim i As Integer

Private Sub CommandButton1_Click()

    ListBox2.Clear

    For i = 0 To 9

        If ListBox1.Selected(i) = True Then

            ListBox2.AddItem ListBox1.List(i)

        End If

    Next i

End Sub

Private Sub OptionButton1_Click()

    ListBox1.MultiSelect = fmMultiSelectSingle

End Sub

Private Sub OptionButton2_Click()

    ListBox1.MultiSelect = fmMultiSelectMulti

End Sub

Private Sub OptionButton3_Click()

    ListBox1.MultiSelect = fmMultiSelectExtended

End Sub

Private Sub UserForm_Initialize()

    For i = 0 To 9

        ListBox1.AddItem "Choice " & (ListBox1.ListCount + 1)

    Next i

    OptionButton1.Caption = "Single Selection"

    ListBox1.MultiSelect = fmMultiSelectSingle

    OptionButton1.Value = True

    OptionButton2.Caption = "Multiple Selection"

    OptionButton3.Caption = "Extended Selection"

    CommandButton1.Caption = "Show selections"

    CommandButton1.AutoSize = True

End Sub


ComboBox 的 Style 屬性範例

下列範例示範如何使用 Style 屬性來決定 ComboBox（下拉式清單方塊）文是區內如何接受文字輸入。使用者可以利用程式中的 OptionButton（選項按鈕）來改變 ComboBox 的 Style 屬性值，並可立刻在 ComboBox 的文字做輸入以試驗結果。如果 Style 屬性值是 fmStyleDropDownList，使用者只能夠利用下拉式清單來選擇其中的項目。但若 Style 屬性值是 fmStyleDropDownCombo，則除了利用下拉式清單，使用者還可以在文字區內輸入文字來選則清單內的項目。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 兩個 OptionButton，命名為 OptionButton1 及 OptionButton2。

2. 一個 ComboBox，命名為 ComboBox1。

Private Sub OptionButton1_Click()

    ComboBox1.Style = fmStyleDropDownCombo

End Sub

Private Sub OptionButton2_Click()

    ComboBox1.Style = fmStyleDropDownList

End Sub

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 1 To 10

        ComboBox1.AddItem "Choice " & i

    Next i

    OptionButton1.Caption = "Select like ComboBox"

    OptionButton1.Value = True

    ComboBox1.Style = fmStyleDropDownCombo

    OptionButton2.Caption = "Select like ListBox"

End Sub


MultiPage 及 TabStrip 的 Style 屬性範例

下列範例示範如何使用 Style 屬性來決定 MultiPage（活頁控制項）及 TabStrip（分頁控制項）之頁籤（pages or tabs）的外觀。範例中同時示範了 Label（標籤）的用途。使用者可以利用程式中的 OptionButton（選項按鈕）來改變 Style 屬性值。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 一個 Label，命名為 Label1。

2. 三個 OptionButton，命名為 OptionButton1 到 OptionButton3。

3. 一個 MultiPage，命名為 MultiPage1。

4. 一個 TabStrip，命名為 TabStrip1。

5. 隨意放置數個控制項到 TabStrip 中。

6. 隨意放置數個控制項到 MultiPage 的每個頁籤中。

Private Sub OptionButton1_Click()

    MultiPage1.Style = fmTabStyleTabs

    TabStrip1.Style = fmTabStyleTabs

End Sub

Private Sub OptionButton2_Click()

    'Note that the page borders are invisible

    MultiPage1.Style = fmTabStyleButtons

    TabStrip1.Style = fmTabStyleButtons

End Sub

Private Sub OptionButton3_Click()

    'Note that the page borders are invisible and

    'the page body begins where the tabs normally appear.

    MultiPage1.Style = fmTabStyleNone

    TabStrip1.Style = fmTabStyleNone

End Sub

Private Sub UserForm_Initialize()

    Label1.Caption = "Page/Tab Style"

    OptionButton1.Caption = "Tabs"

    OptionButton1.Value = True

    MultiPage1.Style = fmTabStyleTabs

    TabStrip1.Style = fmTabStyleTabs

    OptionButton2.Caption = "Buttons"

    OptionButton3.Caption = "No Tabs or Buttons"

End Sub


OldLeft，OldTop，OldHeight，OldWidth 屬性範例

下列範例示範如何使用 OldLeft，OldTop，OldHeight，及 OldWidth 等屬性，在 Layout 事件中保持控制項的位置與大小不變。使用者可以利用程式中標示著 [Move ComboBox] 的 CommandButton（指令按鈕）來移動控制項，並對訊息方塊做適當的回應。標示 [Reset ComboBox] 的 CommandButton 則是用來將控制項放回原來的位置。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 兩個 CommandButton，命名為 CommandButton1 及 CommandButton2。

2. 一個 ComboBox，命名為 ComboBox1。

Dim Initialize As Integer

Dim ComboLeft, ComboTop, ComboWidth, ComboHeight As Integer

Private Sub UserForm_Initialize()

    Initialize = 0

    CommandButton1.Caption = "Move ComboBox"

    CommandButton2.Caption = "Reset ComboBox"

    'Information for resetting ComboBox

    ComboLeft = ComboBox1.Left

    ComboTop = ComboBox1.Top

    ComboWidth = ComboBox1.Width

    ComboHeight = ComboBox1.Height

End Sub

Private Sub CommandButton1_Click()

        ComboBox1.Move 0, 0, , , True

End Sub

Private Sub UserForm_Layout()

    Dim MyControl As Control

    Dim MsgBoxResult As Integer

    If Initialize = 0 Then   'Suppress MsgBox on initial layout event.

        Initialize = 1

        Exit Sub

    End If

    MsgBoxResult = MsgBox("In Layout event - Continue move?", vbYesNo)

    If MsgBoxResult = vbNo Then

        ComboBox1.Move ComboBox1.OldLeft, ComboBox1.OldTop, ComboBox1.OldWidth, ComboBox1.OldHeight

    End If

End Sub

Private Sub CommandButton2_Click()

    ComboBox1.Move ComboLeft, ComboTop, ComboWidth, ComboHeight

    'OldLeft, OldTop, OldWidth, and OldHeight are not recognized here.

    'The following statement, if not commented, would produce an error at run time.

    'ComboBox1.Move ComboBox1.OldLeft, ComboBox1.OldTop, ComboBox1.OldWidth, ComboBox1.OldHeight

End Sub


TabFixedHeight，TabFixedWidth 屬性範例

下列範例示範如何使用 TabFixedHeight 及 TabFixedWidth 等屬性來設定 MultiPage（活頁控制項）及 TabStrip（分頁控制項）中頁籤（tabs）的大小。使用者可以藉著程式中的 SpinButton（微調按鈕）來調整 MultiPage 及 TabStrip 中頁籤的寬與高。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 一個 MultiPage，命名為 MultiPage1。

2. 一個 TabStrip，命名為 TabStrip1。

3. 一個 Label（標籤），命名為 Label1，設定寬度用。

4. 一個 SpinButton，命名為 SpinButton1，設定寬度用。

5. 一個 TextBox（文字方塊），命名為 TextBox1，設定寬度用。

6. 一個 Label，命名為 Label2，設定高度用。

7. 一個 SpinButton，命名為 SpinButton2，設定高度用。

8. 一個 TextBox，命名為 TextBox2，設定高度用。

Private Sub UpdateTabWidth()

    TextBox1.Text = SpinButton1.Value

    TabStrip1.TabFixedWidth = SpinButton1.Value

    MultiPage1.TabFixedWidth = SpinButton1.Value

End Sub

Private Sub UpdateTabHeight()

    TextBox2.Text = SpinButton2.Value

    TabStrip1.TabFixedHeight = SpinButton2.Value

    MultiPage1.TabFixedHeight = SpinButton2.Value

End Sub

Private Sub UserForm_Initialize()

    MultiPage1.Style = fmTabStyleButtons

    Label1.Caption = "Tab Width"

    SpinButton1.Min = 0

    SpinButton1.Max = TabStrip1.Width / TabStrip1.Tabs.Count

    SpinButton1.Value = 0

    TextBox1.Locked = True

    UpdateTabWidth

    Label2.Caption = "Tab Height"

    SpinButton2.Min = 0

    SpinButton2.Max = TabStrip1.Height

    SpinButton2.Value = 0

    TextBox2.Locked = True

    UpdateTabHeight

End Sub

Private Sub SpinButton1_SpinDown()

    UpdateTabWidth

End Sub

Private Sub SpinButton1_SpinUp()

    UpdateTabWidth

End Sub

Private Sub SpinButton2_SpinDown()

    UpdateTabHeight

End Sub

Private Sub SpinButton2_SpinUp()

    UpdateTabHeight

End Sub


TabIndex 屬性範例

下列範例示範如何使用 TabIndex 屬性來顯示並修改控制項的定位順序。程式中讓使用者可以按下 TAB 鍵來移動駐點到下一個定位順序的控制項，並將該控制項的 TabIndex 屬性值顯示出來。同時也可以用滑鼠點選控制項來顯示其 TabIndex 屬性值。若要改便某個控制項的 TabIndex 屬性值，可以將新的值輸入在 TextBox（文字方塊）之中，再按下指令按鈕 CommandButton3。當您改變了 Frame（框架）裏的任何一個控制項的 TabIndex 時，同屬於這個框架的其它控制項的 TabIndex 值也會隨著自動更動新。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 一個 Label（標籤），命名為 Label1。

2. 一個 TextBox，命名為 TextBox1。

3. 一個 Frame，命名為 Frame1。

4. 一個 TextBox，放在 Frame 裏面，命名為 TextBox2。

兩個 CommandButton（指令按鈕），放在 Frame 裏面，命名為 CommandButton1 及 CommandButton2。

5. 一個 ScrollBar（捲軸），放在 Frame 裏面，命名為 ScrollBar1。

6. 一個 CommandButton，不要放在 Frame 裏面，命名為  CommandButton3。

Private Sub MoveToFront()

    Dim i, Temp As Integer

    Temp = Frame1.ActiveControl.TabIndex

    For i = 0 To Temp - 1

        Frame1.Controls.Item(i).TabIndex = i + 1

    Next i

    Frame1.ActiveControl.TabIndex = 0

    TextBox1.Text = Frame1.ActiveControl.TabIndex

End Sub

Private Sub CommandButton3_Click()

    Dim i, Temp As Integer

    If IsNumeric(TextBox1.Text) Then

        Temp = Val(TextBox1.Text)

        If Temp >= Frame1.Controls.Count Or Temp < 0 Then

            'Entry out of range; move control to front of tab order

            MoveToFront

        ElseIf Temp > Frame1.ActiveControl.TabIndex Then

            'Move entry down the list

            For i = Frame1.ActiveControl.TabIndex + 1 To Temp

                Frame1.Controls.Item(i).TabIndex = i - 1

            Next i

            Frame1.ActiveControl.TabIndex = Temp

            TextBox1.Text = Frame1.ActiveControl.TabIndex

        Else

            'Move Entry up the list

            For i = Frame1.ActiveControl.TabIndex - 1 To Temp

                Frame1.Controls.Item(i).TabIndex = i + 1

            Next i

            Frame1.ActiveControl.TabIndex = Temp

            TextBox1.Text = Frame1.ActiveControl.TabIndex

        End If

    Else

        'Text entry; move control to front of tab order

        MoveToFront

    End If

End Sub

Private Sub UserForm_Initialize()

    Label1.Caption = "TabIndex"

    Frame1.Controls(0).SetFocus

    TextBox1.Text = Frame1.ActiveControl.TabIndex

    Frame1.Cycle = fmCycleCurrentForm

    CommandButton3.Caption = "Set TabIndex"

    CommandButton3.TakeFocusOnClick = False

End Sub

Private Sub TextBox2_Enter()

    TextBox1.Text = Frame1.ActiveControl.TabIndex

End Sub

Private Sub CommandButton1_Enter()

    TextBox1.Text = Frame1.ActiveControl.TabIndex

End Sub

Private Sub CommandButton2_Enter()

    TextBox1.Text = Frame1.ActiveControl.TabIndex

End Sub

Private Sub ScrollBar1_Enter()

    TextBox1.Text = Frame1.ActiveControl.TabIndex

End Sub


Layout 事件，LayoutEffect 屬性範例

下列範例使用 Move 方法來移動被選取的控制項，並在 Layout 事件中使用 LayoutEffect 屬性來判斷是哪一個控制項正在移動（控制項被移動過後，UserForm 的安排便被更動了，所以產生 Layout 事件）。程式的操作方法為先選取一個控制項，再按下表單上的 CommandButton（指令按鈕）來移動該控制項。會有一個訊息方塊告訴您被移動的控制項的名稱。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 一個 TextBox，命名為 TextBox1。

2. 一個 ComboBox，命名為 ComboBox1。

3. 一個 OptionButton，命名為 OptionButton1。

4. 一個 CommandButton，命名為 CommandButton1。

5. 一個 ToggleButton，命名為 ToggleButton1。

Private Sub UserForm_Initialize()

    CommandButton1.Caption = "Move current control"

    CommandButton1.AutoSize = True

    CommandButton1.TakeFocusOnClick = False

    ToggleButton1.Caption = "Use Layout Event"

    ToggleButton1.Value = True

End Sub

Private Sub CommandButton1_Click()

    If ActiveControl.Name = "ToggleButton1" Then

        'Keep it stationary

    Else

        'Move the control, using Layout event when ToggleButton1.Value is True

        ActiveControl.Move 0, 0, , , ToggleButton1.Value

    End If

End Sub

Private Sub UserForm_Layout()

    Dim MyControl As Control

    MsgBox "In the Layout Event"

    'Find the control that is moving.

    For Each MyControl In Controls

        If MyControl.LayoutEffect = fmLayoutEffectInitiate Then

            MsgBox MyControl.Name & " is moving."

            Exit For

        End If

    Next

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        ToggleButton1.Caption = "Use Layout Event"

    Else

        ToggleButton1.Caption = "No Layout Event"

    End If

End Sub


Tag 屬性範例

下列範例示範如何使用 Tag 屬性來為 UserForm 上的每個控制項儲存額外的資訊。程式的操作方式為使用者先選取一個控制項，然後按下 CommandButton（指令按鈕），該控制項的 Tag 屬性內容便會顯示在 TextBox（文字方塊） 之中。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 一個 TextBox，命名為 TextBox1。

2. 一個 CommandButton，命名為 CommandButton1。

3. 一個 ScrollBar（捲軸），命名為 ScrollBar1。

4. 一個 ComboBox（下拉式清單方塊），命名為 ComboBox1。

5. 一個 MultiPage（活頁控制項），命名為 MultiPage1。

Private Sub CommandButton1_Click()

    TextBox1.Text = ActiveControl.Tag

End Sub

Private Sub UserForm_Initialize()

    TextBox1.Locked = True

    TextBox1.Tag = "Display area for Tag properties."

    TextBox1.AutoSize = True

    CommandButton1.Caption = "Show Tag of Current Control."

    CommandButton1.AutoSize = True

    CommandButton1.WordWrap = True

    CommandButton1.TakeFocusOnClick = False

    CommandButton1.Tag = "Shows tag of control that has the focus."

    ComboBox1.Style = fmStyleDropDownList

    ComboBox1.Tag = "ComboBox Style is that of a ListBox."

    ScrollBar1.Max = 100

    ScrollBar1.Min = -273

    ScrollBar1.Tag = "Max = " & ScrollBar1.Max & " , Min = " & ScrollBar1.Min

    MultiPage1.Pages.Add

    MultiPage1.Pages.Add

    MultiPage1.Tag = "This MultiPage has " & MultiPage1.Pages.Count & " pages."

End Sub


TopIndex 屬性範例

下列範例示範如何知道一個 ListBox（清單方塊）的第一個資料項以及擁有駐點的資料項。當使用者選取清當方塊裏的某個資料項時，該資料項即擁有駐點。範例中使用 TopIndex 屬性值來得到 ListBox 第一個資料項之索引值，及 ListIndex 屬性值來得知現在駐點是停在哪一個資料項上。使用者選擇 ListBox 裏的資料項時，程式會將 TopIndex 及 ListIndex 屬性值分別顯示出來。如果使用者按下 CommandButton（指令按鈕），則程式將 TopIndex 屬性值改成 ListIndex，且顯示值隨之更新。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 兩個 Label（標籤），命名為 Label1 及 Label2。

2. 兩個 TextBox（文字方塊），命名為 TextBox1 及 TextBox2。

3. 一個 CommandButton，命名為 CommandButton1。

4. 一個 ListBox，命名為 ListBox1。

Private Sub CommandButton1_Click()

    ListBox1.TopIndex = ListBox1.ListIndex

    TextBox1.Text = ListBox1.TopIndex

    TextBox2.Text = ListBox1.ListIndex

End Sub

Private Sub ListBox1_Change()

    TextBox1.Text = ListBox1.TopIndex

    TextBox2.Text = ListBox1.ListIndex

End Sub

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 0 To 24

        ListBox1.AddItem "Choice " & (i + 1)

    Next i

    ListBox1.Height = 66

    CommandButton1.Caption = "Move to top of list"

    CommandButton1.AutoSize = True

    CommandButton1.TakeFocusOnClick = False

    Label1.Caption = "Index of top item"

    TextBox1.Text = ListBox1.TopIndex

    Label2. Caption = "Index of current item"

    Label2.AutoSize = True

    Label2.WordWrap = False

    TextBox2.Text = ListBox1.ListIndex

End Sub


TripleState 屬性範例

下列範例改變 TripleState 屬性值來讓 CheckBox（核取方塊）及 ToggleButton（切換按鈕）接受 Null 這個特殊值。程式允許使用者經由 ToggleButton2 來改變 TripleState 屬性值，並可以試驗不同的 TripleState 屬性值對 CheckBox 或 ToggleButton 的值的影響。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 一個 CheckBox，命名為 CheckBox1。

2. 兩個 ToggleButton，命名為 ToggleButton1 及 ToggleButton2。

Private Sub UserForm_Initialize()

    CheckBox1.Caption = "Value is True"

    CheckBox1.Value = True

    CheckBox1.TripleState = False

    ToggleButton1.Caption = "Value is True"

    ToggleButton1.Value = True

    ToggleButton1.TripleState = False

    ToggleButton2.Value = False

    ToggleButton2.Caption = "Triple State Off"

End Sub

Private Sub ToggleButton2_Click()

    If ToggleButton2.Value = True Then

        ToggleButton2.Caption = "Triple State On"

        CheckBox1.TripleState = True

        ToggleButton1.TripleState = True

    Else

        ToggleButton2.Caption = "Triple State Off"

        CheckBox1.TripleState = False

        ToggleButton1.TripleState = False

    End If

End Sub

Private Sub CheckBox1_Change()

    If IsNull(CheckBox1.Value) Then

        CheckBox1.Caption = "Value is Null"

    ElseIf CheckBox1.Value = False Then

        CheckBox1.Caption = "Value is False"

    ElseIf CheckBox1.Value = True Then

        CheckBox1.Caption = "Value is True"

    End If

End Sub

Private Sub ToggleButton1_Change()

    If IsNull(ToggleButton1.Value) Then

        ToggleButton1.Caption = "Value is Null"

    ElseIf ToggleButton1.Value = False Then

        ToggleButton1.Caption = "Value is False"

    ElseIf ToggleButton1.Value = True Then

        ToggleButton1.Caption = "Value is True"

    End If

End Sub


Value 屬性範例

下列範例將不同控制項的 Value 屬性值顯示出來，以讓使用者明白不同控制項所含有的值有哪些不同。範例中允許使用者藉由 TAB 鍵或滑鼠來選取控制項，程式會將被選取的控制項之 Value 屬性值顯示出來。某些控制項擁有文字輸入區，其所含的文字內容即是該控制項的值。使用者可以直接在其輸入區內輸入文字。某些擁有清單，其值便是使用者選取的清單資料項。使用者若想看看選取的控制項之 Value 屬性值，只需按一下正確的 CommandButton（指令按鈕）即可。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

1. 兩個 CommandButton，命名為 CommandButton1 及 CommandButton2。

2. 兩個 TextBox（文字方塊），命名為 TextBox1 及 TextBox2。

3. 一個 CheckBox（核取方塊），命名為 CheckBox1。

4. 一個 ComboBox（下拉式清單方塊），命名為 ComboBox1。

5. 一個 ListBox（清單方塊），命名為 ListBox1。

6. 一個 MultiPage（活頁控制項），命名為 MultiPage1。

7. 兩個 OptionButton（選項按鈕），命名為 OptionButton1 及 OptionButton2。

8. 一個 ScrollBar（捲軸），命名為 ScrollBar1。

9. 一個 SpinButton（微調按鈕），命名為 SpinButton1。

10. 一個 TabStrip（分頁控制項），命名為 TabStrip1。

11. 一個 ToggleButton（切換按鈕），命名為 ToggleButton1。

Dim i As Integer

Private Sub CommandButton1_Click()

    TextBox1.Text = "Value of " & ActiveControl.Name & " is " & ActiveControl.Value

End Sub

Private Sub UserForm_Initialize()

    CommandButton1.Caption = "Get value of current control"

    CommandButton1.AutoSize = True

    CommandButton1.TakeFocusOnClick = False

    CommandButton1.TabStop = False

    TextBox1.AutoSize = True

    For i = 0 To 10

        ComboBox1.AddItem "Choice " & (i + 1)

        ListBox1.AddItem "Selection " & (100 - i)

    Next i

    CheckBox1.TripleState = True

    ToggleButton1.TripleState = True

    TextBox2.Text = "Enter text here."

End Sub


KeyPress 事件範例

下列範例在一個 TextBox（文字方塊）的 KeyPress 事件中將該文字方塊所收到的按鍵值複製到另一個 TextBox 之中。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 TextBox，命名為 TextBox1 及 TextBox2。

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    TextBox2.Text = TextBox2.Text & Chr(KeyAscii)

    'To handle keyboard combinations (using SHIFT, CTRL, ALT, and another key),

    'or TAB or ENTER, use the KeyDown or KeyUp event.

End Sub

Private Sub UserForm_Initialize()

    Move 0, 0, 570, 380

    TextBox1.Move 30, 40, 220, 160

    TextBox1.MultiLine = True

    TextBox1.WordWrap = True

    TextBox1.Text = "Type text here."

    TextBox1.EnterKeyBehavior = True

    TextBox2.Move 298, 40, 220, 160

    TextBox2.MultiLine = True

    TextBox2.WordWrap = True

    TextBox2.Text = "Typed text copied here."

    TextBox2.Locked = True

 End Sub


Zoom 事件範例

下列範例在 Zoom 事件中判斷表單的 Zoom 屬性值，並在適當的時後顯示或隱藏表單的捲軸。範例中使用一個 Label（標籤）來顯示現在的 Zoom 屬性值，並允許使用者經由 SpinButton（微調按鈕）來設定表單的大小，再按下 CommandButton（指令按鈕）來改變 Zoom 屬性值。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 Label，命名為 Label1。

•	一個 SpinButton，命名為 SpinButton1。

•	一個 CommandButton，命名為 CommandButton1。

•	數個其它控制項，放在表單邊界附近。

Private Sub CommandButton1_Click()

    Zoom = SpinButton1.Value

End Sub

Private Sub SpinButton1_SpinDown()

    Label1.Caption = SpinButton1.Value

End Sub

Private Sub SpinButton1_SpinUp()

    Label1.Caption = SpinButton1.Value

End Sub

Private Sub UserForm_Initialize()

    SpinButton1.Min = 10

    SpinButton1.Max = 400

    SpinButton1.Value = 100

    Label1.Caption = SpinButton1.Value

    CommandButton1.Caption = "Zoom it!"

End Sub

Private Sub UserForm_Zoom(Percent As Integer)

    Dim MyResult As Double

    If Percent > 99 Then

        ScrollBars = fmScrollBarsBoth

        ScrollLeft = 0

        ScrollTop = 0

        MyResult = Width * Percent / 100

        ScrollWidth = MyResult

        MyResult = Height * Percent / 100

        ScrollHeight = MyResult

    Else

        ScrollBars = fmScrollBarsNone

        ScrollLeft = 0

        ScrollTop = 0

    End If

End Sub


Max，Min，MaxLength 屬性範例

下列範例示範如何使用一個獨立的 ScrollBar（捲軸）及其 Max 與 Min 屬性值。使用者可以自行給定 Max 及 Min 屬性值，只要是介於 -1000 到 1000 間的整數即可。範例中並使用了 MaxLength 屬性值來限制 Max 及 Min 屬性值的字元數（一個英文字母或一個數字皆佔一個字元的空間）。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	三個 Label，命名為 Label1 到 Label3。

•	兩個 TextBox，命名為 TextBox1 到 TextBox2。

•	一個 ScrollBar，命名為 ScrollBar1。

Dim TempNum As Integer

Private Sub UserForm_Initialize()

    Label1.Caption = "Min -1000 to 1000"

    ScrollBar1.Min = -1000

    TextBox1.Text = ScrollBar1.Min

    TextBox1.MaxLength = 5

    Label2.Caption = "Max -1000 to 1000"

    ScrollBar1.Max = 1000

    TextBox2.Text = ScrollBar1.Max

    TextBox2.MaxLength = 5

    ScrollBar1.SmallChange = 1

    ScrollBar1.LargeChange = 100

    ScrollBar1.Value = 0

    Label3.Caption = ScrollBar1.Value

End Sub

Private Sub TextBox1_Change()

    If IsNumeric(TextBox1.Text) Then

        TempNum = CInt(TextBox1.Text)

        If TempNum >= -1000 And TempNum <= 1000 Then

            ScrollBar1.Min = TempNum

        Else

            TextBox1.Text = ScrollBar1.Min

        End If

    Else

        TextBox1.Text = ScrollBar1.Min

    End If

End Sub

Private Sub TextBox2_Change()

    If IsNumeric(TextBox2.Text) Then

        TempNum = CInt(TextBox2.Text)

        If TempNum >= -1000 And TempNum <= 1000 Then

            ScrollBar1.Max = TempNum

        Else

            TextBox2.Text = ScrollBar1.Max

        End If

    Else

        TextBox2.Text = ScrollBar1.Max

    End If

End Sub

Private Sub ScrollBar1_Change()

Label3.Caption = ScrollBar1.Value

End Sub


LargeChange，SmallChange 屬性範例

下列範例示範如何使用一個獨立的 ScrollBar（捲軸）及其 LargeChange 與 SmallChange 屬性值。使用者可以自行給定 LargeChange 與 SmallChange 屬性值，只要是介於 0 到 100 間的整數即可。範例中並使用了 MaxLength 屬性值來限制 LargeChange 與 SmallChange 屬性值的字元數（一個英文字母或一個數字皆佔一個字元的空間）。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	三個 Label，命名為 Label1 到 Label3。

•	兩個 TextBox，命名為 TextBox1 到 TextBox2。

•	一個 ScrollBar，命名為 ScrollBar1。

Dim TempNum As Integer

Private Sub ScrollBar1_Change()

    Label3.Caption = ScrollBar1.Value

End Sub

Private Sub TextBox1_Change()

    If IsNumeric(TextBox1.Text) Then

        TempNum = CInt(TextBox1.Text)

        If TempNum >= 0 And TempNum <= 100 Then

            ScrollBar1.SmallChange = TempNum

        Else

            TextBox1.Text = ScrollBar1.SmallChange

        End If

    Else

        TextBox1.Text = ScrollBar1.SmallChange

    End If

End Sub

Private Sub TextBox2_Change()

    If IsNumeric(TextBox2.Text) Then

        TempNum = CInt(TextBox2.Text)

        If TempNum >= 0 And TempNum <= 100 Then

            ScrollBar1.LargeChange = TempNum

        Else

            TextBox2.Text = ScrollBar1.LargeChange

        End If

    Else

        TextBox2.Text = ScrollBar1.LargeChange

    End If

End Sub

Private Sub UserForm_Initialize()

    ScrollBar1.Min = -1000

    ScrollBar1.Max = 1000

    Label1.Caption = "SmallChange 0 to 100"

    ScrollBar1.SmallChange = 1

    TextBox1.Text = ScrollBar1.SmallChange

    TextBox1.MaxLength = 3

    Label2.Caption = "LargeChange 0 to 100"

    ScrollBar1.LargeChange = 100

    TextBox2.Text = ScrollBar1.LargeChange

    TextBox2.MaxLength = 3

    ScrollBar1.Value = 0

    Label3.Caption = ScrollBar1.Value

End Sub


ScrollBars，KeepScrollBarsVisible 屬性範例

下列範例示範如何使用 ScrollBars 及 KeepScrollBarsVisible 屬性值來讓 MultiPage（活頁控制項）的頁籤（page）或 Frame（框架）擁有捲軸。使用者可以經由選擇選項按鈕來給定 KeepScrollBarsVisible 屬性值。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 MultiPage，命名為 MultiPage1。

•	一個 Frame，命名為 Frame1。

•	四個 OptionButton，命名為 OptionButton1 到 OptionButton4。

Private Sub UserForm_Initialize()

    MultiPage1.Pages(0).ScrollBars = fmScrollBarsBoth

    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsNone

    Frame1.ScrollBars = fmScrollBarsBoth

    Frame1.KeepScrollBarsVisible = fmScrollBarsNone

    OptionButton1.Caption = "No scroll bars"

    OptionButton1.Value = True

    OptionButton2.Caption = "Horizontal scroll bars"

    OptionButton3.Caption = "Vertical scroll bars"

    OptionButton4.Caption = "Both scroll bars"

End Sub

Private Sub OptionButton1_Click()

    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsNone

    Frame1.KeepScrollBarsVisible = fmScrollBarsNone

End Sub

Private Sub OptionButton2_Click()

    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsHorizontal

    Frame1.KeepScrollBarsVisible = fmScrollBarsHorizontal

End Sub

Private Sub OptionButton3_Click()

    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsVertical

    Frame1.KeepScrollBarsVisible = fmScrollBarsVertical

End Sub

Private Sub OptionButton4_Click()

    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsBoth

    Frame1.KeepScrollBarsVisible = fmScrollBarsBoth

End Sub


ScrollHeight，ScrollLeft，ScrollTop，ScrollWidth 屬性範例

下列範例使用 MultiPage（活頁控制項）的一個頁籤（page）當作捲動顯示區。使用者可以利用 MultiPage 的 Page2 上的捲軸來捲動顯示內容。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有一個 MultiPage，命名為 MultiPage1，並 MultiPage 的每個頁籤內放置數個控制項。

附註   MultiPage 的每一個頁籤都是獨立的。Page1 不含任何捲軸，而 Page2 則水平與垂直捲軸都有。

Private Sub UserForm_Initialize()

    MultiPage1.Pages(1).ScrollBars = fmScrollBarsBoth

    MultiPage1.Pages(1).KeepScrollBarsVisible = fmScrollBarsNone

    MultiPage1.Pages(1).ScrollHeight = 2 * MultiPage1.Height

    MultiPage1.Pages(1).ScrollWidth = 2 * MultiPage1.Width

    'Set ScrollHeight, ScrollWidth before setting ScrollLeft, ScrollTop

    MultiPage1.Pages(1).ScrollLeft = MultiPage1.Width / 2

    MultiPage1.Pages(1).ScrollTop = MultiPage1.Height / 2

End Sub


InsideHeight，InsideWidth 屬性範例

下列範例示範如何使用 InsideHeight 及 InsideWidth 屬性值來改變一個 CommandButton（指令按鈕）的大小。使用者只要按下該 CommandButton 便可看到結果。

附註   InsideHeight 及 InsideWidth 是唯讀屬性。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 CommandButton，命名為 CommandButton1。

Dim Resize As Single

Private Sub UserForm_Initialize()

    Resize = 0.75

    CommandButton1.Caption = "Resize Button"

End Sub

Private Sub CommandButton1_Click()

    CommandButton1.Move 10, 10, UserForm1.InsideWidth * Resize, UserForm1.InsideHeight * Resize

    CommandButton1.Caption = "Button resized using InsideHeight and InsideWidth!"

End Sub


ListRows 屬性範例

下列範例使用一個 SpinButton（微調按鈕）來控制一個 ComboBox（下拉式清單方塊）之下拉清單的資料顯示行數。許使用者只需改變 SpinButton 的數值，然後按下 ComboBox 的下拉箭頭，便可看到下拉清單的改變。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 ComboBox，命名為 ComboBox1。

•	一個 SpinButton，命名為 SpinButton1。

•	一個 Label（標籤），命名為 Label1。

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 1 To 20

        ComboBox1.AddItem "Choice " & (ComboBox1.ListCount + 1)

    Next i

    SpinButton1.Min = 0

    SpinButton1.Max = 12

    SpinButton1.Value = ComboBox1.ListRows

    Label1.Caption = "ListRows = " & SpinButton1.Value

End Sub

Private Sub SpinButton1_Change()

    ComboBox1.ListRows = SpinButton1.Value

    Label1.Caption = "ListRows = " & SpinButton1.Value

End Sub


ListWidth 屬性範例

下列範例使用一個 SpinButton（微調按鈕）來控制一個 ComboBox（下拉式清單方塊）之下拉清單的顯示寬度。許使用者只需改變 SpinButton 的數值，然後按下 ComboBox 的下拉箭頭，便可看到下拉清單的改變。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 ComboBox，命名為 ComboBox1。

•	一個 SpinButton，命名為 SpinButton1。

•	一個 Label（標籤），命名為 Label1。

Private Sub SpinButton1_Change()

    ComboBox1.ListWidth = SpinButton1.Value

    Label1.Caption = "ListWidth = " & SpinButton1.Value

End Sub

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 1 To 20

        ComboBox1.AddItem "Choice " & (ComboBox1.ListCount + 1)

    Next i

    SpinButton1.Min = 0

    SpinButton1.Max = 130

    SpinButton1.Value = Val(ComboBox1.ListWidth)

    SpinButton1.SmallChange = 5

    Label1.Caption = "ListWidth = " & SpinButton1.Value

End Sub


ListStyle，MultiSelect 屬性範例

下列範例示範如何使用 ListStyle 及 MultiSelect 屬性來控制 ListBox（清單方塊）的外觀及選擇模式。範例中提供使用者 ToggleButton（切換按鈕）以改變 ListStyle 屬性值，另有 OptionButton（選項按鈕）以改變 MultiSelect 屬性值。ListBox 的外觀及選擇模式將會自動跟據使用者的選擇而更動。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 ListBox，命名為 ListBox1。

•	一個 Label，命名為 Label1。

•	三個 OptionButton，命名為 OptionButton1 到 OptionButton3。

•	一個 ToggleButton，命名為 ToggleButton1。

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 1 To 8

        ListBox1.AddItem "Choice" & (ListBox1.ListCount + 1)

    Next i

    Label1.Caption = "MultiSelect Choices"

    Label1.AutoSize = True

    ListBox1.MultiSelect = fmMultiSelectSingle

    OptionButton1.Caption = "Single entry"

    OptionButton1.Value = True

    OptionButton2.Caption = "Multiple entries"

    OptionButton3.Caption = "Extended entries"

    ToggleButton1.Caption = "ListStyle - Plain"

    ToggleButton1.Value = True

    ToggleButton1.Width = 90

    ToggleButton1.Height = 30

End Sub

Private Sub OptionButton1_Click()

    ListBox1.MultiSelect = fmMultiSelectSingle

End Sub

Private Sub OptionButton2_Click()

    ListBox1.MultiSelect = fmMultiSelectMulti

End Sub

Private Sub OptionButton3_Click()

    ListBox1.MultiSelect = fmMultiSelectExtended

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        ToggleButton1.Caption = "Plain ListStyle"

        ListBox1.ListStyle = fmListStylePlain

    Else

        ToggleButton1.Caption = "OptionButton or CheckBox"

        ListBox1.ListStyle = fmListStyleOption

    End If

End Sub


MouseIcon，MousePointer 屬性範例

下列範例示範如何為某個控制項或某些情況指定滑鼠游標。您可以使用 MousePointer 來選擇系統提供的滑鼠游標，或者加上 MouseIcon 屬性來指定自訂的游標。

範例程式操作方法如下：

•	從 ListBox（清單方塊）中可以選擇一個系統提供的滑鼠游標，這個游標會指定給第一個 CommandButton（指令按鈕）。

•	按下第一個 CommandButton 則將其游標指定給第二個 CommandButton。

•	按下第二個 CommandButton 可以載入一個自訂游標，並將游標指定給此按鈕。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 CommandButton，命名為 CommandButton1 及 CommandButton2。

•	一個 ListBox，命名為 ListBox1。

附註   範例中使用到兩個圖示檔（以 ico 為附檔名），皆是以 LoadPicture 函數載入的。您可視情況修改 LoadPicture 函數呼叫時的參數來載入您自己電腦裏的其它圖示檔。

Private Sub ListBox1_Click()

    If IsNull(ListBox1.Value) = False Then

        CommandButton1.MousePointer = ListBox1.Value

        If CommandButton1.MousePointer = fmMousePointerCustom Then

            CommandButton1.MouseIcon = LoadPicture("c:\msvc20\cdk32\samples\circ1\bix.ico")

        End If

    End If

End Sub

Private Sub CommandButton1_Click()

    CommandButton2.MousePointer = CommandButton1.MousePointer

    If CommandButton2.MousePointer = fmMousePointerCustom Then

        CommandButton2.MouseIcon = CommandButton1.MouseIcon

    End If

End Sub

Private Sub CommandButton2_Click()

    CommandButton2.MousePointer = fmMousePointerCustom

    CommandButton2.MouseIcon = LoadPicture("c:\msvc20\cdk32\samples\push\push.ico")

End Sub

Private Sub UserForm_Initialize()

    'Load ListBox with MousePointer choices

    ListBox1.ColumnCount = 2

    ListBox1.AddItem "fmMousePointerDefault"

    ListBox1.List(0, 1) = fmMousePointerDefault

    ListBox1.AddItem "fmMousePointerArrow"

    ListBox1.List(1, 1) = fmMousePointerArrow

    ListBox1.AddItem "fmMousePointerCross"

    ListBox1.List(2, 1) = fmMousePointerCross

    ListBox1.AddItem "fmMousePointerIBeam"

    ListBox1.List(3, 1) = fmMousePointerIBeam

    ListBox1.AddItem "fmMousePointerSizeNESW"

    ListBox1.List(4, 1) = fmMousePointerSizeNESW

    ListBox1.AddItem "fmMousePointerSizeNS"

    ListBox1.List(5, 1) = fmMousePointerSizeNS

    ListBox1.AddItem "fmMousePointerSizeNWSE"

    ListBox1.List(6, 1) = fmMousePointerSizeNWSE

    ListBox1.AddItem "fmMousePointerSizeWE"

    ListBox1.List(7, 1) = fmMousePointerSizeWE

    ListBox1.AddItem "fmMousePointerUpArrow"

    ListBox1.List(8, 1) = fmMousePointerUpArrow

    ListBox1.AddItem "fmMousePointerHourglass"

    ListBox1.List(9, 1) = fmMousePointerHourGlass

    ListBox1.AddItem "fmMousePointerNoDrop"

    ListBox1.List(10, 1) = fmMousePointerNoDrop

    ListBox1.AddItem "fmMousePointerAppStarting"

    ListBox1.List(11, 1) = fmMousePointerAppStarting

    ListBox1.AddItem "fmMousePointerHelp"

    ListBox1.List(12, 1) = fmMousePointerHelp

    ListBox1.AddItem "fmMousePointerSizeAll"

    ListBox1.List(13, 1) = fmMousePointerSizeAll

    ListBox1.AddItem "fmMousePointerCustom"

    ListBox1.List(14, 1) = fmMousePointerCustom

    ListBox1.BoundColumn = 2

    ListBox1.Value = fmMousePointerDefault

    MsgBox "ListBox1.Value =" & ListBox1.Value & "."

    CommandButton1.MousePointer = ListBox1.Value

End Sub


EnterKeyBehavior 屬性範例

下列範例示範如何使用 EnterKeyBehavior 屬性來控制 TextBox（文字方塊）處理 ENTER 鍵的方式。 範例允許使用者設定 TextBox 是否允許多行輸入。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 TextBox，命名為 TextBox1。

•	兩個 ToggleButton（切換按鈕），命名為 ToggleButton1 及 ToggleButton2。

Private Sub UserForm_Initialize()

    TextBox1.EnterKeyBehavior = True

    ToggleButton1.Caption = "EnterKeyBehavior is True"

    ToggleButton1.Width = 70

    ToggleButton1.Value = True

    TextBox1.MultiLine = True

    ToggleButton2.Caption = "MultiLine is True"

    ToggleButton2.Width = 70

    ToggleButton2.Value = True

    TextBox1.Height = 100

    TextBox1.WordWrap = True

    TextBox1.Text = "Type your text here. If EnterKeyBehavior is True,"& _
    " press Enter to start a new line. Otherwise, press SHIFT+ENTER."

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        TextBox1.EnterKeyBehavior = True

        ToggleButton1.Caption = "EnterKeyBehavior is True"

    Else

        TextBox1.EnterKeyBehavior = False

        ToggleButton1.Caption = "EnterKeyBehavior is False"

    End If

End Sub

Private Sub ToggleButton2_Click()

    If ToggleButton2.Value = True Then

        TextBox1.MultiLine = True

        ToggleButton2.Caption = "MultiLine TextBox"

    Else

        TextBox1.MultiLine = False

        ToggleButton2.Caption = "Single-line TextBox"

    End If

End Sub


Index 屬性範例

下列範例示範如何使用 Index 屬性來改變 MultiPage（活頁控制項）及 TabStrip（分頁控制項）裏頁籤（pages and tabs）的順序。使用者若按下程式中的 CommandButton1，MultiPage 及 TabStrip 的第三個頁籤便會被改成第一個頁籤。若按下 CommandButton2 則將 MultiPage 及 TabStrip 之選取到的頁籤改成最後一個頁籤。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 CommandButton（指令按鈕），命名為 CommandButton1 及 CommandButton2。

•	一個 MultiPage，命名為 MultiPage1。

•	一個 TabStrip，命名為 TabStrip1。

Dim MyPageOrTab As Object

Private Sub CommandButton1_Click()

'Move third page and tab to front of control

    MultiPage1.page3.Index = 0

    TabStrip1.Tab3.Index = 0

End Sub

Private Sub CommandButton2_Click()

'Move selected page and tab to back of control

    Set MyPageOrObject = MultiPage1.SelectedItem

    MsgBox "MultiPage1.SelectedItem = " & MultiPage1.SelectedItem.Name

    MyPageOrObject.Index = 4

    Set MyPageOrObject = TabStrip1.SelectedItem

    MsgBox "TabStrip1.SelectedItem = " & TabStrip1.SelectedItem.Caption

    MyPageOrObject.Index = 4

End Sub

Private Sub UserForm_Initialize()

    MultiPage1.Width = 200

    MultiPage1.Pages.Add

    MultiPage1.Pages.Add

    MultiPage1.Pages.Add

    TabStrip1.Width = 200

    TabStrip1.Tabs.Add

    TabStrip1.Tabs.Add

    TabStrip1.Tabs.Add

    CommandButton1.Caption = "Move third page/tab to front"

    CommandButton1.Width = 120

    CommandButton2.Caption = "Move selected item to back"

    CommandButton2.Width = 120

 End Sub


Enabled，Locked 屬性範例

下列範例示範如何使用 Enabled 及 Locked 屬性。範例中提供兩個 CheckBox（核取方塊）讓使用者可以分別改變兩個屬性的屬性值，故使用者可以觀察到個別屬性的效果，也可以看到兩個屬性一起作用的結果。程式同時也提供兩個 TextBox（文字方塊），使用者可以藉著將其中一個文字方塊的內容複製到另一個來觀察這兩個屬性的作用。

附註    [複製] 的快速鍵是 CTRL+C，而 [貼上] 的快速鍵是 CTRL+V。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 TextBox，命名為 TextBox1 及 TextBox2。

•	兩個 CheckBox，命名為 CheckBox1 及 CheckBox2。

Private Sub CheckBox1_Change()

    TextBox2.Text = "TextBox2"

    TextBox1.Enabled = CheckBox1.Value

End Sub

Private Sub CheckBox2_Change()

    TextBox2.Text = "TextBox2"

    TextBox1.Locked = CheckBox2.Value

End Sub

Private Sub UserForm_Initialize()

    TextBox1.Text = "TextBox1"

    TextBox1.Enabled = True

    TextBox1.Locked = False

    CheckBox1.Caption = "Enabled"

    CheckBox1.Value = True

    CheckBox2.Caption = "Locked"

    CheckBox2.Value = False

    TextBox2.Text = "TextBox2"

End Sub


Delay 屬性範例

下列範例示範當連續發生 Change，SpinUp，及 SpinDown 事件時，三個事件的時間間隔。當使用者在 SpinButton（微調按鈕）或 ScrollBar（捲軸）上按著滑鼠左鍵不放時，便會連續發生這三個事件。

範例中允許使用者設定三個事件的時間間隔，然後按下 SpinButton 來試驗其結果。每當 SpinUp 及 SpinDown 事件發生時，程式中的 ListBox（清單方塊）便將它記錄下來以供觀察。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 SpinButton，命名為 SpinButton1。

•	兩個 OptionButton（選項按鈕），命名為 OptionButton1 及 OptionButton2。

•	一個 ListBox，命名為 ListBox1。

Dim EventCount As Long

Private Sub ResetControl()

    ListBox1.Clear

    EventCount = 0

    SpinButton1.Value = 5000

End Sub

Private Sub UserForm_Initialize()

    SpinButton1.Min = 0

    SpinButton1.Max = 10000

    ResetControl

    SpinButton1.Delay = 50

    OptionButton1.Caption = "50 millisecond delay"

    OptionButton2.Caption = "250 millisecond delay"

    OptionButton1.Value = True

End Sub

Private Sub OptionButton1_Click()

    SpinButton1.Delay = 50

    ResetControl

End Sub

Private Sub OptionButton2_Click()

    SpinButton1.Delay = 250

    ResetControl

End Sub

Private Sub SpinButton1_SpinDown()

    EventCount = EventCount + 1

    ListBox1.AddItem EventCount

End Sub

Private Sub SpinButton1_SpinUp()

    EventCount = EventCount + 1

    ListBox1.AddItem EventCount

End Sub


DropButtonStyle，ShowDropButtonWhen 屬性範例

下列範例示範如何指定不同的符號給 ComboBox（下拉式清單方塊）或 TextBox（文字方塊）的下拉箭頭。範例中提供一個 ComboBox，內含所有可以指定給下拉箭頭的符號，使用者可以很容易地選擇。範例中也用到 Locked 屬性，您可以參考其用法。若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 ComboBox，命名為 ComboBox1。

•	一個 Label（標籤），命名為 Label1。

•	一個 TextBox ，命名為 TextBox1，放在 Label1 的後面（Label1 蓋住 TextBox1）。

Private Sub ComboBox1_Click()

    ComboBox1.DropButtonStyle = ComboBox1.Value

    TextBox1.DropButtonStyle = ComboBox1.Value

End Sub

Private Sub UserForm_Initialize()

    ComboBox1.ColumnCount = 2

    ComboBox1.BoundColumn = 2

    ComboBox1.TextColumn = 1

    ComboBox1.AddItem "Blank Button"

    ComboBox1.List(0, 1) = 0

    ComboBox1.AddItem "Down Arrow"

    ComboBox1.List(1, 1) = 1

    ComboBox1.AddItem "Ellipsis"

    ComboBox1.List(2, 1) = 2

    ComboBox1.AddItem "Underscore"

    ComboBox1.List(3, 1) = 3

    ComboBox1.Value = 0

    TextBox1.Text = "TextBox1"

    TextBox1.ShowDropButtonWhen = fmShowDropButtonWhenAlways

    TextBox1.Locked = True

    Label1.Caption = "TheDropButton also applies to a TextBox."

    Label1.AutoSize = True

    Label1.WordWrap = False

End Sub


LineCount，TextLength 屬性範例

下列範例示範如何使用 LineCount 及 TextLength 屬性來計算 TextBox（文字方塊）所含內容的字元數及行數。並示範如何使用 SetFocus 方法。使用者可以在 TextBox 做輸入，並可隨時得知 LineCount 及 TextLength 屬性值。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 TextBox，命名為 TextBox1。

•	一個 CommandButton（指令按鈕），命名為 CommandButton1。

•	兩個 Label（標籤），命名為 Label1 及 Label2。

'Type SHIFT+ENTER to start a new line in the text box.

Private Sub CommandButton1_Click()

    'Must first give TextBox1 the focus to get line count

    TextBox1.SetFocus

    Label1.Caption = "LineCount = " & TextBox1.LineCount

    Label2.Caption = "TextLength = " & TextBox1.TextLength

End Sub

Private Sub UserForm_Initialize()

    CommandButton1.WordWrap = True

    CommandButton1.AutoSize = True

    CommandButton1.Caption = "Get Counts"

    Label1.Caption = "LineCount = "

    Label2.Caption = "TextLength = "

    TextBox1.MultiLine = True

    TextBox1.WordWrap = True

    TextBox1.Text = "Enter your text here."

End Sub


Count 屬性範例

下列範例說明 Count 屬性值的意義。表單的 Controls 集合物件之 Count 屬性代表表單內控制項的數目，而 MultiPage（活頁控制項）及 TabStrip（分頁控制項）的 Count 屬性則代表頁籤（pages or tabs）的數目。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區。表單內可任意設置控制項，但必需符合下列兩項：

•	MultiPage 的名稱必需以  [MultiPage] 做開頭。

•	TabStrip 的名稱必需以 [TabStrip] 做開頭。

附註   您可以自由增加頁籤數目到 MultiPage 或 TabStrip 中，方法是先在活頁或分頁控制項上連續按滑鼠左鍵兩次，再按滑鼠右鍵，然後從快顯功能表裏選擇 New Page 命令項。

Private Sub UserForm_Initialize()

    Dim MyControl As Control

    MsgBox "UserForm1.Controls.Count = " & Controls.Count

    For Each MyControl In Controls

        If (MyControl.Name Like "MultiPage*") Then

            MsgBox MyControl.Name & ".Pages.Count = " & MyControl.Pages.Count

        ElseIf (MyControl.Name Like "TabStrip*") Then

            MsgBox MyControl.Name & ".Tabs.Count = " & MyControl.Tabs.Count

        End If

    Next

End Sub


Alignment 屬性範例

下列範例使用數個 OptionButton（選項按鈕）來示範 Alignment 屬性的用法。程式中使用一個 ToggleButton（切換按鈕）來讓使用者改變選項按鈕的文字對齊（alignment）方式。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區。表單內可任意設置控制項，但必需符合下列兩項：

•	兩個 OptionButton，命名為 OptionButton1 及 OptionButton2。

•	一個 ToggleButton，命名為 ToggleButton1。

Private Sub UserForm_Initialize()

    OptionButton1.Alignment = fmAlignmentLeft

    OptionButton2.Alignment = fmAlignmentLeft

    OptionButton1.Caption = "Alignment with AutoSize"

    OptionButton2.Caption = "Choice 2"

    OptionButton1.AutoSize = True

    OptionButton2.AutoSize = True

    ToggleButton1.Caption = "Left Align"

    ToggleButton1.WordWrap = True

    ToggleButton1.Value = True

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        ToggleButton1.Caption = "Left Align"

        OptionButton1.Alignment = fmAlignmentLeft

        OptionButton2.Alignment = fmAlignmentLeft

    Else

        ToggleButton1.Caption = "Right Align"

        OptionButton1.Alignment = fmAlignmentRight

        OptionButton2.Alignment = fmAlignmentRight

    End If

End Sub


ActiveControl 屬性範例

下列程式利用 ActiveControl 屬性來記錄使用者曾經使用過程式裏的哪些控制項。在每個控制項的 Enter 事件中都會呼叫 TraceFocus 副程式來做這項記錄。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區。表單內可任意設置控制項，但必需符合下列兩項：

•	一個 ScrollBar（捲軸），命名為 ScrollBar1。

•	一個 ListBox（清單方塊），命名為 ListBox1。

•	兩個 OptionButton（選項按鈕），命名為 OptionButton1 a及 OptionButton2。

•	一個 Frame（框架），命名為 Frame1。

Dim MyControl As Control

Private Sub TraceFocus()

    ListBox1.AddItem ActiveControl.Name

    ListBox1.List(ListBox1.ListCount - 1, 1) = ActiveControl.TabIndex

End Sub

Private Sub UserForm_Initialize()

    ListBox1.ColumnCount = 2

    ListBox1.AddItem "Controls Visited"

    ListBox1.List(0, 1) = "Control Index"

End Sub

Private Sub Frame1_Enter()

    TraceFocus

End Sub

Private Sub ListBox1_Enter()

    TraceFocus

End Sub

Private Sub OptionButton1_Enter()

    TraceFocus

End Sub

Private Sub OptionButton2_Enter()

    TraceFocus

End Sub

Private Sub ScrollBar1_Enter()

    TraceFocus

End Sub


DropDown 方法範例

下列範例使用 DropDown 方法來顯示 ComboBox（下拉式清單方塊）的清單。使用者可以藉由按下範例中的 CommandButton（指令按鈕）來顯示 ComboBox 的選項清單。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 ComboBox，命名為 ComboBox1。

•	一個 CommandButton，命名為 CommandButton1。

Private Sub CommandButton1_Click()

    ComboBox1.DropDown

End Sub

Private Sub UserForm_Initialize()

    ComboBox1.AddItem "Turkey"

    ComboBox1.AddItem "Chicken"

    ComboBox1.AddItem "Duck"

    ComboBox1.AddItem "Goose"

    ComboBox1.AddItem "Grouse"

End Sub


使用 TextBox 的 Cut 及 Paste 方法之說明範例

下列範例使用 Cut 及 Paste 方法來從一個 TextBox（文字方塊）中剪下一段文字來貼到另一個 TextBox 之中。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 TextBox 控制項，命名為 TextBox1 與 TextBox2。

•	一個 CommandButton（指令按鈕），命名為 CommandButton1。

Private Sub UserForm_Initialize()

    TextBox1.Text = "From TextBox1!"

    TextBox2.Text = "Hello "

    CommandButton1.Caption = "Cut and Paste"

    CommandButton1.AutoSize = True

End Sub

Private Sub CommandButton1_Click()

    TextBox2.SelStart = 0

    TextBox2.SelLength = TextBox2.TextLength

    TextBox2.Cut

    TextBox1.SetFocus

    TextBox1.SelStart = 0

    TextBox1.Paste

    TextBox2.SelStart = 0

End Sub


使用 Page 的 Cut 及 Paste 方法之說明範例

下列範例使用 Add，Cut，及 Paste 等方法說明如何從 MultiPage（活頁控制項） Page 中剪下一個控制項，及如何將一個控制項貼到一個 Page 之中。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	三個 CommandButton（指令按鈕），命名為 CommandButton1 到 CommandButton3。

•	一個 MultiPage，命名為 MultiPage1。

Dim MyTextBox As Control

Private Sub CommandButton1_Click()

    Set MyTextBox = MultiPage1.Pages(MultiPage1.Value).Controls.Add("Forms.TextBox.1", "MyTextBox", Visible)

    CommandButton2.Enabled = True

    CommandButton1.Enabled = False

End Sub

Private Sub CommandButton2_Click()

    MultiPage1.Pages(MultiPage1.Value).Controls.Cut

    CommandButton3.Enabled = True

    CommandButton2.Enabled = False

End Sub

Private Sub CommandButton3_Click()

    Dim MyPage As Object

    Set MyPage = MultiPage1.Pages.Item(MultiPage1.Value)

    MyPage.Paste

    CommandButton3.Enabled = False

End Sub

Private Sub UserForm_Initialize()

    CommandButton1.Caption = "Add"

    CommandButton2.Caption = "Cut"

    CommandButton3.Caption = "Paste"

    CommandButton1.Enabled = True

    CommandButton2.Enabled = False

    CommandButton3.Enabled = False

End Sub


Name 屬性範例

下列範例把表單內所有控制項的 Name 屬性值顯示出來。範例中利用 Controls 集合物件來取得直屬於表單的所有控制項。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含一個命名為 CommandButton1 的 CommandButton（指令按鈕），以及數個其它控制項。

Private Sub CommandButton1_Click()

    Dim MyControl As Control

    For Each MyControl In Controls

        MsgBox "MyControl.Name = " & MyControl.Name

    Next

End Sub


存取 Tab 之說明範例

下列範例說明幾個存取 TabStrip（分頁控制項）中個別 tab 的方式﹕

•	使用 Tabs 集合物件，配合數值索引值。

•	使用 Tabs 集合物件，配合字串索引值。

•	使用 Tabs 集合物件，配合 Item 方法。

•	直接使用個別 Tab 的名稱。

•	使用 SelectedItem 屬性。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有一個命名為 TabStrip1 的 TabStrip﹕

Private Sub UserForm_Initialize()

    Dim TabName As String

    For i = 0 To TabStrip1.Count - 1

        'Using index (numeric or string)

        MsgBox "TabStrip1.Tabs(i).Caption = " & TabStrip1.Tabs(i).Caption

        MsgBox "TabStrip1.Tabs.Item(i).Caption = " & TabStrip1.Tabs.Item(i).Caption

        TabName = TabStrip1.Tabs(i).Name

        MsgBox "TabName = " & TabName

        MsgBox "TabStrip1.Tabs(TabName).Caption = " & TabStrip1.Tabs(TabName).Caption

        MsgBox "TabStrip1.Tabs.Item(TabName).Caption = " & TabStrip1.Tabs.Item(TabName).Caption

        'Use Tab object without referring to Tabs collection

        If i = 0 Then

            MsgBox "TabStrip1.Tab1. Caption = " & TabStrip1.Tab1.Caption

        ElseIf i = 1 Then

            MsgBox "TabStrip1.Tab2. Caption = " & TabStrip1.Tab2.Caption

        EndIf

        'Use SelectedItem Property

        TabStrip1.Value = i

        MsgBox " TabStrip1.SelectedItem.Caption = " & TabStrip1.SelectedItem.Caption

    Next i

End Sub


Zoom 屬性範例

下列範例使用 Zoom 屬性來放大或縮小表單，Page，或 Frame 裏頭所顯示的資訊。範例中包含一個 Frame（框架），一個在 Frame裏面的 TextBox（文字方塊），及一個 ScrollBar（捲軸）。Frame 的放大程度由 Zoom 屬性值來決定。使用者可以藉由 ScrollBar 來改變 Zoom 屬性值。TextBox 則是拿來顯示放大縮小的效果用的。

範例中同時也使用了 Max 和 Min 屬性來限制 ScrollBar 的允許範圍。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 Label（標籤），命名為 Label1 及 Label2。

•	一個 ScrollBar，命名為 ScrollBar1。

•	一個 Frame，命名為 Frame1。

•	一個 TextBox，命名為 TextBox1，並將之放在 Frame1 裏面。

Private Sub UserForm_Initialize()

    ScrollBar1.Max = 400

    ScrollBar1.Min = 10

    ScrollBar1.Value = 100

    Label1.Caption = "10  -----Percent of Original Size---- 400"

    Label2.Caption = ScrollBar1.Value

    Frame1.TextBox1.Text = "Enter your text here."

    Frame1.TextBox1.MultiLine = True

    Frame1.TextBox1.WordWrap = True

    Frame1.Zoom = ScrollBar1.Value

End Sub

Private Sub ScrollBar1_Change()

    Frame1.Zoom = ScrollBar1.Value

    Label2.Caption = ScrollBar1.Value

End Sub


TextColumn 屬性範例

下列範例使用 TextColumn 屬性來決定 ListBox（清單方塊）要將哪一個資料行的資料項指定給自己的 Text 屬性。範例中指定 ListBox 的第三個資料行為其 text column。當使用者選擇 ListBox 中的某個資料項時，由 TextColumn 屬性所指定的資料行裏相對應的內容將會顯示在 TextBox（文字方塊）之中。

範例中同時示範了如何使用 AddItem 方法及 List 屬性來載入多資料行的 ListBox 的清單資料。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 ListBox，命名為 ListBox1。

•	一個 TextBox，命名為 TextBox1。

Private Sub UserForm_Initialize()

ListBox1.ColumnCount = 3

ListBox1.AddItem "Row 1, Col 1"

ListBox1.List(0, 1) = "Row 1, Col 2"

ListBox1.List(0, 2) = "Row 1, Col 3"

ListBox1.AddItem "Row 2, Col 1"

ListBox1.List(1, 1) = "Row 2, Col 2"

ListBox1.List(1, 2) = "Row 2, Col 3"

ListBox1.AddItem "Row 3, Col 1"

ListBox1.List(2, 1) = "Row 3, Col 2"

ListBox1.List(2, 2) = "Row 3, Col 3"

ListBox1.TextColumn = 3

End Sub

Private Sub ListBox1_Change()

TextBox1.Text = ListBox1.Text

End Sub


PictureSizeMode 屬性範例

下列範例使用 PictureSizeMode 屬性來示範三種顯示圖片的方式﹕原圖顯示，改變圖片大小但維持其縱橫比例，改變圖片大小且不維持其縱橫比。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 Frame（框架），命名為 Frame1。

•	一個 SpinButton（微調按鈕），命名為 SpinButton1。

•	一個 TextBox，命名為 TextBox1。

•	三個 OptionButton（選項按鈕），命名為 OptionButton1 到 OptionButton3。

附註   這個範例算是 PictureAlignment 屬性範例的改良版本。這兩個屬性的作用是相輔相成的。範例中的改良部份為三個 OptionButton 的事件副程式，這三個副程式控制圖片的三種顯示方式。

Dim Alignments(5) As String

Private Sub UserForm_Initialize()

    Alignments(0) = "0 - Top Left"

    Alignments(1) = "1 - Top Right"

    Alignments(2) = "2 - Center"

    Alignments(3) = "3 - Bottom Left"

    Alignments(4) = "4 - Bottom Right"

    'Specify a bitmap that exists on your system

    Frame1.Picture = LoadPicture("c:\winnt2\ball.bmp")

    SpinButton1.Min = 0

    SpinButton1.Max = 4

    SpinButton1.Value = 0

    TextBox1.Text = Alignments(0)

    Frame1.PictureAlignment = SpinButton1.Value

    OptionButton1.Caption = "Crop"

    OptionButton1.Value = True

    OptionButton2.Caption = "Stretch"

    OptionButton3.Caption = "Zoom"

End Sub

Private Sub OptionButton1_Click()

    If OptionButton1.Value = True Then

        Frame1.PictureSizeMode = fmPictureSizeModeClip

    End If

End Sub

Private Sub OptionButton2_Click()

    If OptionButton2.Value = True Then

        Frame1.PictureSizeMode = fmPictureSizeModeStretch

    End If

End Sub

Private Sub OptionButton3_Click()

    If OptionButton3.Value = True Then

        Frame1.PictureSizeMode = fmPictureSizeModeZoom

    End If

End Sub

Private Sub SpinButton1_Change()

    TextBox1.Text = Alignments(SpinButton1.Value)

    Frame1.PictureAlignment = SpinButton1.Value

End Sub

Private Sub TextBox1_Change()

    Select Case TextBox1.Text

    Case "0"

        TextBox1.Text = Alignments(0)

        Frame1.PictureAlignment = 0

    Case "1"

        TextBox1.Text = Alignments(1)

        Frame1.PictureAlignment = 1

    Case "2"

        TextBox1.Text = Alignments(2)

        Frame1.PictureAlignment = 2

    Case "3"

        TextBox1.Text = Alignments(3)

        Frame1.PictureAlignment = 3

    Case "4"

        TextBox1.Text = Alignments(4)

        Frame1.PictureAlignment = 4

    Case Else

        TextBox1.Text = Alignments(SpinButton1.Value)

        Frame1.PictureAlignment = SpinButton1.Value

    End Select

End Sub


PictureAlignment 屬性範例

下列範例使用 PictureAlignment 屬性來設定背景圖片。範例中並把 PictureAlignment 的允許值事先存入一個陣列中供使用者選擇。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 Frame（框架），命名為 Frame1。

•	一個 SpinButton（微調按鈕），命名為 SpinButton1。

•	一個 TextBox（文字方塊），命名為 TextBox1。

Dim Alignments(5) As String

Private Sub UserForm_Initialize()

    Alignments(0) = "0 - Top Left"

    Alignments(1) = "1 - Top Right"

    Alignments(2) = "2 - Center"

    Alignments(3) = "3 - Bottom Left"

    Alignments(4) = "4 - Bottom Right"

    'Specify a bitmap that exists on your system

    Frame1.Picture = LoadPicture("c:\winnt2\ball.bmp")

    SpinButton1.Min = 0

    SpinButton1.Max = 4

    SpinButton1.Value = 0

    TextBox1.Text = Alignments(0)

    Frame1.PictureAlignment = SpinButton1.Value

End Sub

Private Sub SpinButton1_Change()

    TextBox1.Text = Alignments(SpinButton1.Value)

    Frame1.PictureAlignment = SpinButton1.Value

End Sub

Private Sub TextBox1_Change()

    Select Case TextBox1.Text

    Case "0"

        TextBox1.Text = Alignments(0)

        Frame1.PictureAlignment = 0

    Case "1"

        TextBox1.Text = Alignments(1)

        Frame1.PictureAlignment = 1

    Case "2"

        TextBox1.Text = Alignments(2)

        Frame1.PictureAlignment = 2

    Case "3"

        TextBox1.Text = Alignments(3)

        Frame1.PictureAlignment = 3

    Case "4"

        TextBox1.Text = Alignments(4)

        Frame1.PictureAlignment = 4

    Case Else

        TextBox1.Text = Alignments(SpinButton1.Value)

        Frame1.PictureAlignment = SpinButton1.Value

    End Select

End Sub


GroupName 屬性範例

下列範例使用 GroupName 屬性，在同一個表單中建立兩組 OptionButton（選項按鈕）。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有五個 OptionButton，命名為 OptionButton1 到 OptionButton5。

Private Sub UserForm_Initialize()

    OptionButton1.GroupName = "Widgets"

    OptionButton2.GroupName = "Widgets"

    OptionButton4.GroupName = "Widgets"

    OptionButton3.GroupName = "Gadgets-Group2"

    OptionButton5.GroupName = "Gadgets-Group2"

End Sub


GetFromClipboard 方法範例

下列範例示範如何將資料由 TextBox（文字方塊）移到 [剪貼簿] （Clipboard）中，如何由剪貼簿到 DataObject（資料物件），及如何由 DataObject 到另一個 TextBox 之中。範例中使用 GetFromClipboard 方法可將資料由剪貼簿傳送到 DataObject 裏面。同時也示範了 Copy 及 GetText 方法如何使用。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 TextBox，命名為 TextBox1 及 TextBox2。

•	一個 CommandButton（指令按鈕），命名為 CommandButton1。

Dim MyData as DataObject

Private Sub CommandButton1_Click()

    'Need to select text before copying it to Clipboard

    TextBox1.SelStart = 0

    TextBox1.SelLength = TextBox1.TextLength

    TextBox1.Copy

    MyData.GetFromClipboard

    TextBox2.Text = MyData.GetText(1)

End Sub

Private Sub UserForm_Initialize()

    Set MyData = New DataObject

    TextBox1.Text = "Move this data to the Clipboard, to a DataObject, then to TextBox2!"

End Sub


PutInClipboard 方法範例

下列範例示範如何將資料由 TextBox（文字方塊）傳到 DataObject（資料物件）中，如何從 DataObject 到 [剪貼簿] （Clipboard）中，及如何由剪貼簿到另一個 TextBox 之中。範例中使用 PutInClipboard 方法將資料由 DataObject 傳送到剪貼簿中。同時也示範了 SetText 及 Paste 方法如何使用。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 TextBox，命名為 TextBox1 及 TextBox2。

•	一個 CommandButton（指令按鈕），命名為 CommandButton1。

Dim MyData As DataObject

Private Sub CommandButton1_Click()

    Set MyData = New DataObject

    MyData.SetText TextBox1.Text

    MyData.PutInClipboard

    TextBox2.Paste

End Sub

Private Sub UserForm_Initialize()

    TextBox1.Text = "Move this data to a DataObject, to the Clipboard, then to TextBox2!"

End Sub


DragBehavior，EnterFieldBehavior 屬性範例

下列範例示範如何使用 DragBehavior 屬性及 EnterFieldBehavior 屬性來改變當使用者在做 [拖拉] 動作時，相關控制項的反應效果。

範例中使用兩個 TextBox（文字方塊），您可以分別設定其 DragBehavior 和 EnterFieldBehavior 屬性來觀察不同的拖拉效果。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 TextBox，命名為 TextBox1 及 TextBox2。

•	兩個 ToggleButton（切換按鈕），命名為 ToggleButton1 及 ToggleButton2。這兩個按鈕是設定 TextBox1 用的。

•	兩個 ToggleButton，命名為 ToggleButton3 及 ToggleButton4。這兩個按鈕是設定 TextBox2 用的。

Private Sub UserForm_Initialize()

    TextBox1.Text = "Once upon a time in a land ...,"

    ToggleButton1.Value = True

    ToggleButton1.Caption = "Drag Enabled"

    ToggleButton1.WordWrap = True

    TextBox1.DragBehavior = fmDragBehaviorEnabled

    ToggleButton2.Value = True

    ToggleButton2.Caption = "Recall Selection"

    ToggleButton2.WordWrap = True

    TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

    TextBox2.Text = "XXX, YYYY"

    ToggleButton3.Value = False

    ToggleButton3.Caption = "Drag Disabled"

    ToggleButton3.WordWrap = True

    TextBox2.DragBehavior = fmDragBehaviorDisabled

    ToggleButton4.Value = False

    ToggleButton4.Caption = "Select All"

    ToggleButton4.WordWrap = True

    TextBox2.EnterFieldBehavior = fmEnterFieldBehaviorSelectAll

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

       ToggleButton1.Caption = "Drag Enabled"

       TextBox1.DragBehavior = fmDragBehaviorEnabled

    Else

       ToggleButton1.Caption = "Drag Disabled"

       TextBox1.DragBehavior = fmDragBehaviorDisabled

    End If

End Sub

Private Sub ToggleButton2_Click()

    If ToggleButton2.Value = True Then

        ToggleButton2.Caption = "Recall Selection"

        TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

    Else

        ToggleButton2.Caption = "Select All"

        TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorSelectAll

    End If

End Sub

Private Sub ToggleButton3_Click()

    If ToggleButton3.Value = True Then

       ToggleButton3.Caption = "Drag Enabled"

       TextBox2.DragBehavior = fmDragBehaviorEnabled

    Else

       ToggleButton3.Caption = "Drag Disabled"

       TextBox2.DragBehavior = fmDragBehaviorDisabled

    End If

End Sub

Private Sub ToggleButton4_Click()

    If ToggleButton4.Value = True Then

        ToggleButton4.Caption = "Recall Selection"

        TextBox2.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

    Else

       ToggleButton4.Caption = "Select All"

       TextBox2.EnterFieldBehavior = fmEnterFieldBehaviorSelectAll

    End If

End Sub


GetFormat, GetText, SetText 方法範例

下列範例示範如何使用 GetFormat，GetText，及 SetText 方法來將資料在 DataObject（資料物件）和 TextBox（文字方塊）之間互相傳送。

範例中讓使用者在 TextBox 中輸入文字，並可藉由按下指令按鈕 CommandButton1 來將所輸入的文字以標準文字格式傳送到 DataObject 中，或可藉由按下指令按鈕 CommandButton2 來將 DataObject 裏的文字資料以標準格式傳送到文字方塊中。如果使用者按下指令按鈕 CommandButton3，則程式會以自訂格式來複製 TextBox1 裏的資料到 DataObject 中，而按下指令按鈕 CommandButton4 則以自訂格式將資料從 DataObject 傳送回文字方塊。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 TextBox，命名為 TextBox1。

•	四個 CommandButton，命名為 CommandButton1 到 CommandButton4。

•	一個 Label（標籤），命名為 Label1。

Dim MyDataObject As DataObject

Private Sub CommandButton1_Click()

'Put standard format on Clipboard

    If TextBox1.TextLength > 0 Then

        Set MyDataObject = New DataObject

        MyDataObject.SetText TextBox1.Text

        Label1.Caption = "Put on D.O."

        CommandButton2.Enabled = True

        CommandButton4.Enabled = False

    End If

End Sub

Private Sub CommandButton2_Click()

'Get standard format from Clipboard

    If MyDataObject.GetFormat(1) = True Then

        Label1.Caption = "Std format - " & MyDataObject.GetText(1)

    End If

End Sub

Private Sub CommandButton3_Click()

'Put custom format on Clipboard

    If TextBox1.TextLength > 0 Then

        Set MyDataObject = New DataObject

        MyDataObject.SetText TextBox1.Text, 233

        Label1.Caption = "Custom on D.O."

        CommandButton4.Enabled = True

        CommandButton2.Enabled = False

    End If

End Sub

Private Sub CommandButton4_Click()

'Get custom format from Clipboard

    If MyDataObject.GetFormat(233) = True Then

        Label1.Caption = "Cust format - " & MyDataObject.GetText(233)

End If

End Sub

Private Sub UserForm_Initialize()

    CommandButton2.Enabled = False

    CommandButton4.Enabled = False

End Sub


CanPaste 屬性，Paste，Copy 方法範例

下列範例示範如何使用 CanPaste 屬性及 Paste 方法來將一個 ComboBox（下拉式清單方塊）從剪貼簿（Clipboard）中貼到 MultiPage（活頁控制項）的某一個 Page 中。範例中同時也示範了如何使用 SetFocus 及 Copy 方法來將控制項由表單中複製到剪貼簿中。

範例的操作方法為：按一下 CommandButton1 則將 ComboBox 複製到剪貼簿中；連續按兩下 CommandButton1 則將 ComboBox 從剪貼簿貼到 MultiPage 之中（在 DblClick 事件中完成）。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 TextBox，命名為 TextBox1。

•	一個 ComboBox，命名為 ComboBox1。

•	一個 MultiPage，命名為 MultiPage1。

•	一個 CommandButton，命名為 CommandButton1。

附註   範例中還包含一段副程式來示範如何將文字資料貼到控制項中。

Private Sub UserForm_Initialize()

    ComboBox1.AddItem "It's a beautiful day!"

    CommandButton1.Caption = "Copy ComboBox to Clipboard"

    CommandButton1.AutoSize = True

End Sub

Private Sub MultiPage1_DblClick(ByVal Index As Long, ByVal Cancel As MSForms.ReturnBoolean)

    If MultiPage1.Pages(MultiPage1.Value).CanPaste = True Then

        MultiPage1.Pages(MultiPage1.Value).Paste

    Else

        TextBox1.Text = "Can't Paste"

    End If

End Sub

Private Sub CommandButton1_Click()

        UserForm1.ComboBox1.SetFocus

        UserForm1.Copy

End Sub

'Code for pasting text into a control

'Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

'   If ComboBox1.CanPaste = True Then

'        ComboBox1.Paste

'    Else

'        TextBox1.Text = "Can't Paste"

'    End If

'End Sub


ScrollBar 控制項範例

下列範例示範如何使用獨立式（stand-alone）ScrollBar（捲軸），並在使用者按下捲軸的捲動方塊時反應出捲軸位置的改變。有三種方法可以移動捲軸的捲動方塊：一、按下捲軸兩端的小箭頭其中一個。二、在捲動方塊和兩端小箭頭之間的區欲按下滑鼠左鍵。三、直接拖拉捲動方塊。如果使用者使用第三種方法，則在拖拉的過程中，程式會在 Scroll 事件中將使用者拖拉的改變量顯示出來。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 ScrollBar，命名為 ScrollBar1。

•	兩個 Label，命名為 Label1 及 Label2。Label1 用來告訴使用者捲軸位置的上下限，Label2 則用來告訴使用者捲軸的現在位置。

Dim ScrollSaved As Integer        'Previous ScrollBar setting

Private Sub UserForm_Initialize()

    ScrollBar1.Min = -225

    ScrollBar1.Max = 289

    ScrollBar1.Value = 0

    Label1.Caption = "-225  -----Widgets-----   289"

    Label1.AutoSize = True

    Label2.Caption = ""

End Sub

Private Sub ScrollBar1_Change()

    Label2.Caption = " Widget Changes " & (ScrollSaved - ScrollBar1.Value)

End Sub

Private Sub ScrollBar1_Exit(ByVal Cancel as MSForms.ReturnBoolean)

    Label2.Caption = " Widget Changes " & (ScrollSaved - ScrollBar1.Value)

    ScrollSaved = ScrollBar1.Value

End Sub

Private Sub ScrollBar1_Scroll()

    Label2.Caption = (ScrollSaved - ScrollBar1.Value) & " Widget Changes by Scrolling"

End Sub


CanUndo，CanRedo 屬性，UndoAction，RedoAction 方法範例

下列範例示範如何對文字方塊或 ComboBox（下拉式清單方塊）的資料作 [復原鍵入] 及 [重複鍵入] 的動作。本程式會先檢察是否可以執行 [復原鍵入] 及 [重複鍵入] 的動作，可以的話才會去執行。範例中使使用到 CanUndo 和 CanRedo 屬性，以及 UndoAction 和 RedoAction 方法。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 TextBox（文字方塊），命名為 TextBox1。

•	一個 ComboBox（下拉式清單方塊），命名為 ComboBox1。

•	兩個 CommandButton（指令按鈕），命名為 CommandButton1 及 CommandButton2。

Private Sub CommandButton1_Click()

    If UserForm1.CanUndo = True Then

        UserForm1.UndoAction

        MsgBox "Undid IT"

    Else

        MsgBox "No undo performed."

    End If

End Sub

Private Sub CommandButton2_Click()

    If UserForm1.CanRedo = True Then

        UserForm1.RedoAction

        MsgBox "Redid IT"

    Else

        MsgBox "No redo performed."

    End If

End Sub

Private Sub UserForm_Initialize()

    TextBox1.Text = "Type your text here."

    ComboBox1.ColumnCount = 3

    ComboBox1.AddItem "Choice 1, column 1"

    ComboBox1.List(0, 1) = "Choice 1, column 2"

ComboBox1.List(0, 2) = "Choice 1, column 3"

    CommandButton1.Caption = "Undo"

    CommandButton2.Caption = "Redo"

End Sub


BoundColumn 屬性範例

下列範例說明 BoundColumn 屬性是如何影響一個 ListBox（清單方塊）的值（value）。程式允許使用者選擇要將 ListBox 的某個資料行的索引值設定給該 ListBox 的值，或是用某個資料欄的索引值來設定。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 ListBox，命名為 ListBox1。

•	一個 Label（標籤），命名為 Label1。

•	三個 OptionButton（選項按鈕），命名為 OptionButton1，OptionButton2，及 OptionButton3。

Private Sub UserForm_Initialize()

    ListBox1.ColumnCount = 2

    ListBox1.AddItem "Item 1, Column 1"

    ListBox1.List(0, 1) = "Item 1, Column 2"

    ListBox1.AddItem "Item 2, Column 1"

    ListBox1.List(1, 1) = "Item 2, Column 2"

    ListBox1.Value = "Item 1, Column 1"

    OptionButton1.Caption = "List Index"

    OptionButton2.Caption = "Column 1"

    OptionButton3.Caption = "Column 2"

    OptionButton2.Value = True

End Sub

Private Sub OptionButton1_Click()

    ListBox1.BoundColumn = 0

    Label1.Caption = ListBox1.Value

End Sub

Private Sub OptionButton2_Click()

    ListBox1.BoundColumn = 1

    Label1.Caption = ListBox1.Value

End Sub

Private Sub OptionButton3_Click()

    ListBox1.BoundColumn = 2

    Label1.Caption = ListBox1.Value

End Sub

Private Sub ListBox1_Click()

    Label1.Caption = ListBox1.Value

End Sub


List 屬性範例

下列範例示範如何將一個多資料行的 ListBox（清單方塊）的資料以資料行為單位相互對調。範例以兩種方式使用到 List 屬性﹕

1. 在對調資料時，是以資料項為單位逐一對調。這個方式是直接存取 ListBox 的個別資料項，故使用 List 屬性時必需指定個別資料項所在的行與欄的索引值。

2. 在起始階段，使用一個陣列來給定 ListBox 資料項的初始值。這個方式不需存取個別資料項，故使用 List 屬性時不需要指定個別資料項所在行與欄的索引值。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有一個命名為 ListBox1 的 ListBox，及一個命名為 CommandButton1 的 CommandButton（指令按鈕）。

Dim MyArray(6, 3)           'Array containing column values for ListBox.

Private Sub UserForm_Initialize()

    Dim i As Single

    ListBox1.ColumnCount = 3        'This list box contains 3 data columns

    'Load integer values MyArray

    For i = 0 To 5

        MyArray(i, 0) = i

        MyArray(i, 1) = Rnd

        MyArray(i, 2) = Rnd

    Next i

    'Load ListBox1

    ListBox1.List() = MyArray

End Sub

Private Sub CommandButton1_Click()

' Exchange contents of columns 1 and 3

    Dim i As Single

    Dim Temp As Single

    For i = 0 To 5

        Temp = ListBox1.List(i, 0)

        ListBox1.List(i, 0) = ListBox1.List(i, 2)

        ListBox1.List(i, 2) = Temp

    Next i

End Sub


TabStrip 控制項範例
ClientHeight，ClientLeft，ClientTop，ClientWidth 屬性範例

下列範例中，當使用者按下 CommandButton（指令按鈕）時，程式便將 Image（影像控制項）的大小設定成和 TabStrip（分頁控制項）的顯示區一樣。範例中使用到下列屬性﹕Height，Left，Top，Width，ClientHeight，ClientLeft，ClientTop，以及 ClientWidth。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 CommandButton，命名為 CommandButton1。

•	一個 TabStrip，命名為 TabStrip1。

•	一個 Image，命名為 Image1。

Private Sub UserForm_Initialize()

CommandButton1.Caption = "Size Image to Tab Area"

CommandButton1.WordWrap = True

CommandButton1.AutoSize = True

End Sub

Private Sub CommandButton1_Click()

Image1.ZOrder (fmFront)                  'Place Image in front of TabStrip

'ClientLeft and ClientTop are measured from the edge of the TabStrip,

'not from the edges of the form containing the TabStrip.

Image1.Left = TabStrip1.Left + TabStrip1.ClientLeft

Image1.Top = TabStrip1.Top + TabStrip1.ClientTop

Image1.Width = TabStrip1.ClientWidth

Image1.Height = TabStrip1.ClientHeight

End Sub


MultiLine，WordWrap，ScrollBars 屬性範例

下列範例示範如何使用 TextBox（文字方塊）的 MultiLine，WordWrap，及 ScrollBars 等屬性。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 TextBox，命名為 TextBox1。

•	四個 ToggleButton，命名為 ToggleButton1 到 ToggleButton4。

使用者如果想要看見 TextBox 裏所有的文字內容，可以按下程式中的 ToggleButton（切換按鈕）來將 MultiLine 及 WordWrap 屬性值設成 True。

當 MultiLine 屬性值是 True 時，使用者可以按下鍵盤的 SHIFT+ENTER 組合鍵來輸入新的文字行。

TextBox 的 ScrollBars（捲軸）會依使用者輸入的文字長短自動顯示或隱藏。

Private Sub UserForm_Initialize()

'Initialize TextBox properties and toggle buttons

TextBox1.Text = "Type your text here. Enter SHIFT+ENTER to move to a new line."

TextBox1.AutoSize = False

ToggleButton1.Caption = "AutoSize Off"

ToggleButton1.Value = False

ToggleButton1.AutoSize = True

TextBox1.WordWrap = False

ToggleButton2.Caption = "WordWrap Off"

ToggleButton2.Value = False

ToggleButton2.AutoSize = True

TextBox1.ScrollBars = 0

ToggleButton3.Caption = "ScrollBars Off"

ToggleButton3.Value = False

ToggleButton3.AutoSize = True

TextBox1.MultiLine = False

ToggleButton4.Caption = "Single Line"

ToggleButton4.Value = False

ToggleButton4.AutoSize = True

 End Sub

Private Sub ToggleButton1_Click()

'Set AutoSize property and associated ToggleButton

If ToggleButton1.Value = True Then

TextBox1.AutoSize = True

ToggleButton1.Caption = "AutoSize On"

Else

TextBox1.AutoSize = False

ToggleButton1.Caption = "AutoSize Off"

End If

End Sub

Private Sub ToggleButton2_Click()

'Set WordWrap property and associated ToggleButton

If ToggleButton2.Value = True Then

TextBox1.WordWrap = True

ToggleButton2.Caption = "WordWrap On"

Else

TextBox1.WordWrap = False

ToggleButton2.Caption = "WordWrap Off"

End If

End Sub

Private Sub ToggleButton3_Click()

'Set ScrollBars property and associated ToggleButton

If ToggleButton3.Value = True Then

TextBox1.ScrollBars = 3

ToggleButton3.Caption = "ScrollBars On"

Else

TextBox1.ScrollBars = 0

ToggleButton3.Caption = "ScrollBars Off"

End If

End Sub

Private Sub ToggleButton4_Click()

'Set MultiLine property and associated ToggleButton

If ToggleButton4.Value = True Then

TextBox1.MultiLine = True

ToggleButton4.Caption = "Multiple Lines"

Else

TextBox1.MultiLine = False

ToggleButton4.Caption = "Single Line"

End If

End Sub


Drag-and-Drop 動作範例

下列範例示範如何利用 DataObject（資料物件）來將一個 ListBox（清單方塊）的部份資料經由 [拖放]（Drag-and-Drop）的方式傳送到另一個 ListBox 去。範例中在 MouseMove 事件中使用到 SetText 及 StartDrag 方法來完成拖放及複製動作。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有兩個 ListBox，命名為 ListBox1 及 ListBox2。其中第二個 ListBox 中必需含有資料項。

Private Sub ListBox2_MouseMove(ByVal Button As Integer, ByVal Shift As

Integer, ByVal X As Single, ByVal Y As Single)

Dim MyDataObject As DataObject

If Button = 1 Then

Set MyDataObject = New DataObject

Dim Effect As Integer

MyDataObject.SetText ListBox2.value

Effect = MyDataObject.startdrag

End If

End Sub


存取個別 Page 範例

下列範例示範存取 MultiPage（活頁控制項）裏的個別 page 的幾種方法﹕

•	使用 Pages 集合物件，配合數值索引值。

•	使用 Pages 集合物件，配合字串索引值。

•	使用 Pages 集合物件，配合 Item 方法。

•	直接使用 MultiPage 裏個別 page 的名稱。

•	使用 SelectedItem 屬性。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有一個 MultiPage，命名為 MultiPage1。

Private Sub UserForm_Initialize()

    Dim PageNAme As String

    For i = 0 To MultiPage1.Count - 1

        'Use index (numeric or string)

        MsgBox "MultiPage1.Pages(i).Caption = " & MultiPage1.Pages(i).Caption

        MsgBox "MultiPage1.Pages.Item(i).Caption = " & MultiPage1.Pages.Item(i).Caption

        PageNAme = MultiPage1.Pages(i).Name

        MsgBox "PageName = " & PageNAme

        MsgBox "MultiPage1.Pages(PageName).Caption = " & MultiPage1.Pages(PageNAme).Caption

        MsgBox "MultiPage1.Pages.Item(PageName).Caption = " & MultiPage1.Pages.Item(PageNAme).Caption

        'Use Page object without referring to Pages collection

        If i = 0 Then

            MsgBox "MultiPage1.Page1.Caption= " & MultiPage1.Page1.Caption

        ElseIf i = 1 Then

            MsgBox "MultiPage1.Page2.Caption = " & MultiPage1.Page2.Caption

        End If

'Use SelectedItem Property

        MultiPage1.Value = i

        MsgBox "MultiPage1.SelectedItem.Caption = " & MultiPage1.SelectedItem.Caption

    Next i

End Sub


執行階段加入控制項到表單之說明範例

下列範例示範如何利用 Add 方法在執行階段加入控制項到表單之中，並在 AddControl 事件中告確認控制項已經加入。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 CommandButton（指令按鈕），命名為 CommandButton1。

•	一個 Label（標籤），命名為 Label1。

Dim Mycmd as Control

Private Sub CommandButton1_Click()

Set Mycmd = Controls.Add("Forms.CommandButton.1") ', CommandButton2, Visible)

Mycmd.Left = 18

Mycmd.Top = 150

Mycmd.Width = 175

Mycmd.Height = 20

Mycmd.Caption = "This is fun." & Mycmd.Name

End Sub

Private Sub UserForm_AddControl(ByVal Control As MSForms.Control)

Label1.Caption = "Control was Added."

End Sub


執行階段加入控制項到 MultiPage 之說明範例

下列範例示範如何使用 Add，Clear，以及 Remove 等方法在執行階段在 MultiPage（活頁控制項）的 Page 裏加入或移除控制項。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 MultiPage，命名為 MultiPage1。

•	三個 CommandButton（指令按鈕），命名為 CommandButton1 到 CommandButton3。

Dim MyTextBox As Control

Private Sub CommandButton1_Click()

Set MyTextBox = MultiPage1.Pages(0).Controls.Add("Forms.TextBox.1", "MyTextBox", Visible)

End Sub

Private Sub CommandButton2_Click()

MultiPage1.Pages(0).Controls.Clear

End Sub

Private Sub CommandButton3_Click()

If MultiPage1.Pages(0).Controls.Count > 0 Then

MultiPage1.Pages(0).Controls.Remove "MyTextBox"

End If

End Sub

Private Sub UserForm_Initialize()

CommandButton1.Caption = "Add control"

CommandButton2.Caption = "Clear controls"

CommandButton3.Caption = "Remove control"

End Sub


ListBox 控制項範例

下列範例示範如何使用 AddItem，RemoveItem， SetFocus 等方法，以及 ListIndex 和 ListCount 等屬性來加入或移除 ListBox（清單方塊）裏的資料項。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 ListBox，命名為 ListBox1。

•	兩個 CommandButton（指令按鈕），命名為 CommandButton1 及 CommandButton2。

Dim EntryCount As Single

Private Sub CommandButton1_Click()

    EntryCount = EntryCount + 1

    ListBox1.AddItem (EntryCount & " - Selection")

End Sub

Private Sub CommandButton2_Click()

    ListBox1.SetFocus

    'Ensure ListBox contains list items

    If ListBox1.ListCount >= 1 Then

        'If no selection, choose last list item.

        If ListBox1.ListIndex = -1 Then

            ListBox1.ListIndex = ListBox1.ListCount - 1

        End If

        ListBox1.RemoveItem (ListBox1.ListIndex)

    End If

End Sub

Private Sub UserForm_Initialize()

    EntryCount = 0

    CommandButton1.Caption = "Add Item"

    CommandButton2.Caption = "Remove Item"

End Sub


ZOrder 方法範例

下列範例以 TextBox（文字方塊）來說明不同的 z-order 對控制項的影響。使用者可以讓 TextBox 顯示出來（將該 TextBox 挪到最前面的 z-order 的位置），或將它隱藏在其它控制項的後方（將該 TextBox 挪到最後面的 z-order 的位置）。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	三個 TextBox，命名為 TextBox1 到 TextBox3。

•	一個 ToggleButton（切換按鈕），命名為 ToggleButton1。

Private Sub ToggleButton1_Click()

If ToggleButton1.Value = True Then

TextBox2.ZOrder (fmTop)          'Place TextBox2 on Top of z-order

'Update ToggleButton caption to identify next state

ToggleButton1.Caption = "Send TextBox2 to back"

Else

TextBox2.ZOrder (1)              'Place TextBox2 on Bottom of z-order

'Update ToggleButton caption to identify next state

ToggleButton1.Caption = "Bring TextBox2 to front"

End If

End Sub

Private Sub UserForm_Initialize()

'Set up text boxes to show z-order in the form

TextBox1.Text = "TextBox 1"

TextBox2.Text = "TextBox 2"

TextBox3.Text = "TextBox 3"

TextBox1.Height = 40

TextBox2.Height = 40

TextBox3.Height = 40

TextBox1.Width = 60

TextBox2.Width = 60

TextBox3.Width = 60

TextBox1.Left = 10

TextBox1.Top = 10

TextBox2.Left = 25      'Overlap TextBox2 on TextBox1

TextBox2.Top = 25

TextBox3.Left = 40      'Overlap TextBox3 on TextBox2, TextBox1

TextBox3.Top = 40

ToggleButton1.Value = False

ToggleButton1.Caption = "Bring TextBox2 to Front"

ToggleButton1.Left = 10

ToggleButton1.Top = 90

ToggleButton1.Width = 50

ToggleButton1.Height = 50

End Sub


Accelerator，Caption 屬性範例

這個範例中，當使用者每一次按下程式中的 CommandButton（指令按鈕）時，便改變這個指令按鈕的 Accelerator 及 Caption 屬性，改變這些屬性的程式碼在 Click 事件之中。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有一個 CommandButton，命名為 CommandButton1。

Private Sub UserForm_Initialize()

CommandButton1.Accelerator  = "C"         'Set Accelerator key to ALT + C

End Sub

Private Sub CommandButton1_Click ()

If CommandButton1.Caption = "OK" Then     'Check caption, then change it.

CommandButton1.Caption = "Clicked"

CommandButton1.Accelerator  = "C"         'Set Accelerator key to ALT + C

Else

CommandButton1.Caption = "OK"

CommandButton1.Accelerator  = "O"         'Set Accelerator key to ALT + O

End If

End Sub


AutoSize 屬性範例

下列範例用一個只允許單行輸入的 TextBox（文字方塊）和一個允許多行輸入的 TextBox 來示範 AutoSize 屬性的效果。使用者可以在兩個 TextBox 內輸入文字，然後分別開啟或關閉 AutoSize 屬性的作用來觀察其效果。程式中也使用到 Text 屬性。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 TextBox，命名為 TextBox1 及 TextBox2。

•	一個 ToggleButton（切換按鈕），命名為 ToggleButton1。

Private Sub UserForm_Initialize()

    TextBox1.Text = "Single-line TextBox. Type your text here."

    TextBox2.MultiLine = True

    TextBox2.Text = "Multi-line TextBox. Type your text here. Use CTRL+ENTER to start a new line."

    ToggleButton1.Value = True

    ToggleButton1.Caption = "AutoSize On"

    TextBox1.AutoSize = True

    TextBox2.AutoSize = True

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        ToggleButton1.Caption = "AutoSize On"

        TextBox1.AutoSize = True

        TextBox2.AutoSize = True

    Else

        ToggleButton1.Caption = "AutoSize Off"

        TextBox1.AutoSize = False

        TextBox2.AutoSize = False

    End If

End Sub


Bold，Italic，Size，StrikeThrough，Underline，Weight 屬性範例

下列範例說明如何使用 Font 物件及該物件的 Bold，Italic，Size，StrikeThrough，Underline，及 Weight 等屬性。您可以直接修改控制項或表單的這些字型屬性，也可以利用字型物件來修改。兩種方法在程式中都有使用。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 Label，命名為 Label1 及 Label1。

•	四個 ToggleButton，命名為 ToggleButton1 到 ToggleButton4。

•	一個 TextBox，命名為 Label2 及 TextBox1。

Dim MyFont As StdFont

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        MyFont.Bold = True            'Using MyFont alias to control font

        ToggleButton1.Caption = "Bold On"

        MyFont.Size = 22              'Increase the font size

    Else

        MyFont.Bold = False

        ToggleButton1.Caption = "Bold Off"

        MyFont.Size = 8               'Return font size to initial size

    End If

    TextBox1.Text = Str(MyFont.Weight)  'Bold and Weight are related

End Sub

Private Sub ToggleButton2_Click()

    If ToggleButton2.Value = True Then

        Label1.Font.Italic = True            'Using Label1.Font directly

        ToggleButton2.Caption = "Italic On"

    Else

        Label1.Font.Italic = False

        ToggleButton2.Caption = "Italic Off"

    End If

End Sub

Private Sub ToggleButton3_Click()

    If ToggleButton3.Value = True Then

        Label1.Font.Strikethrough = True            'Using Label1.Font directly

        ToggleButton3.Caption = "StrikeThrough On"

    Else

        Label1.Font.Strikethrough = False

        ToggleButton3.Caption = "StrikeThrough Off"

    End If

End Sub

Private Sub ToggleButton4_Click()

    If ToggleButton4.Value = True Then

        MyFont.Underline = True            'Using MyFont alias for Label1.Font

        ToggleButton4.Caption = "Underline On"

    Else

        Label1.Font.Underline = False

        ToggleButton4.Caption = "Underline Off"

    End If

End Sub

Private Sub UserForm_Initialize()

    Set MyFont = Label1.Font

    ToggleButton1.Value = True

    ToggleButton1.Caption = "Bold On"

    Label1.AutoSize = True	'Set size of Label1

    Label1.AutoSize = False

    ToggleButton2.Value = False

    ToggleButton2.Caption = "Italic Off"

    ToggleButton3.Value = False

    ToggleButton3.Caption = "StrikeThrough Off"

    ToggleButton4.Value = False

    ToggleButton4.Caption = "Underline Off"

    Label2.Caption = "Font Weight"

    TextBox1.Text = Str(Label1.Font.Weight)

    TextBox1.Enabled = False

End Sub


改變邊界與顏色之說明範例

下列範例示範如何使用 BorderStyle 及 SpecialEffect 屬性，並列出這些屬性所提供的邊界設定。範例中同時示範如何使用 BackColor，BackStyle，BorderColor，及 ForeColor 等屬性來改變顏色設定。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	六個 TextBox（文字方塊），命名為 TextBox1 到 TextBox6。

•	兩個 ToggleButton（切換按鈕），命名為 ToggleButton1 及 ToggleButton2。

Private Sub UserForm_Initialize()

'Initialize each TextBox with a border style or special effect,

'and foreground and background colors

'TextBox1 initially uses a borderstyle

TextBox1.Text = "BorderStyle-Single"

TextBox1.BorderStyle = fmBorderStyleSingle

TextBox1.BorderColor = RGB(255, 128, 128)   'Color - Salmon

TextBox1.ForeColor = RGB(255, 255, 0)       'Color - Yellow

TextBox1.BackColor = RGB(0, 128, 64)        'Color - Green #2

'TextBoxes 2 through 6 initially use special effects

TextBox2.Text = "Flat"

TextBox2.SpecialEffect = fmSpecialEffectFlat

TextBox2.ForeColor = RGB(64, 0, 0)          'Color - Brown

TextBox2.BackColor = RGB(0, 0, 255)         'Color - Blue

'Ensure the background style for TextBox2 is initially opaque.

TextBox2.BackStyle = fmBackStyleOpaque

TextBox3.Text = "Etched"

TextBox3.SpecialEffect = fmSpecialEffectEtched

TextBox3.ForeColor = RGB(128, 0, 255)       'Color - Purple

TextBox3.BackColor = RGB(0, 255, 255)       'Color - Cyan

'Define BorderColor for later use (when borderstyle=fmBorderStyleSingle)

TextBox3.BorderColor = RGB(0, 0, 0)         'Color - Black

TextBox4.Text = "Bump"

TextBox4.SpecialEffect = fmSpecialEffectBump

TextBox4.ForeColor = RGB(255, 0, 255)       'Color - Magenta

TextBox4.BackColor = RGB(0, 0, 100)         'Color - Navy blue

TextBox5.Text = "Raised"

TextBox5.SpecialEffect = fmSpecialEffectRaised

TextBox5.ForeColor = RGB(255, 0, 0)         'Color - Red

TextBox5.BackColor = RGB(128, 128, 128)     'Color - Gray

TextBox6.Text = "Sunken"

TextBox6.SpecialEffect = fmSpecialEffectSunken

TextBox6.ForeColor = RGB(0, 64, 0)          'Color - Olive

TextBox6.BackColor = RGB(0, 255, 0)         'Color - Green #1

ToggleButton1.Caption = "Swap styles"

ToggleButton2.Caption = "Transparent/Opaque background"

End Sub

Private Sub ToggleButton1_Click()

'Swap borders between TextBox1 and TextBox3

If ToggleButton1.Value = True Then

'Change TextBox1 from BorderStyle to Etched

TextBox1.Text = "Etched"

TextBox1.SpecialEffect = fmSpecialEffectEtched

'Change TextBox3 from Etched to BorderStyle

TextBox3.Text = "BorderStyle-Single"

TextBox3.BorderStyle = fmBorderStyleSingle

Else

'Change TextBox1 back to BorderStyle

TextBox1.Text = "BorderStyle-Single"

TextBox1.BorderStyle = fmBorderStyleSingle

'Change TextBox3 back to Etched

TextBox3.Text = "Etched"

TextBox3.SpecialEffect = fmSpecialEffectEtched

End If

End Sub

Private Sub ToggleButton2_Click()

'Set background to Opaque or Transparent

If ToggleButton2.Value = True Then

'Change TextBox2 to a transparent background

TextBox2.BackStyle = fmBackStyleTransparent

Else

'Change TextBox2 back to opaque background

TextBox2.BackStyle = fmBackStyleOpaque

End If

End Sub


Column 屬性範例

'

下列範例將清單資料項存放在一個二維陣列之中，並載入兩個 ListBox（清單方塊），使用 Column 及 List 屬性來將清單資料設定給 ListBox。請注意，在設定 Column 屬性值時，陣列資料項的行與列索引值會被互換。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有兩個 ListBox，命名為 ListBox1 及 ListBox2。

Dim MyArray(6,3)

Private Sub UserForm_Initialize()

    Dim i As Single

    ListBox1.ColumnCount = 3        'The 1st list box contains 3 data columns

    ListBox2.ColumnCount = 6        'The 2nd box contains 6 data columns

    'Load integer values into first column of MyArray

    For i = 0 To 5

        MyArray(i, 0) = i

    Next i

    'Load columns 2 and three of MyArray

    MyArray(0, 1) = "Zero"

    MyArray(1, 1) = "One"

    MyArray(2, 1) = "Two"

    MyArray(3, 1) = "Three"

    MyArray(4, 1) = "Four"

    MyArray(5, 1) = "Five"

    MyArray(0, 2) = "Zero"

    MyArray(1, 2) = "Un ou Une"

    MyArray(2, 2) = "Deux"

    MyArray(3, 2) = "Trois"

    MyArray(4, 2) = "Quatre"

    MyArray(5, 2) = "Cinq"

    'Load data into ListBox1 and ListBox2

    ListBox1.List() = MyArray

    ListBox2.Column() = MyArray

End Sub


ColumnWidths 屬性範例

下列範例示範如何使用 ColumnWidths 屬性來改變一個允許多資料欄的 ListBox（清單方塊）的個別欄寬。範例中使用了三個 TextBox（文字方塊）來讓使用者輸入個別欄寬，並在 Exit 事件中將欄寬的單位標示出來。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 ListBox，命名為 ListBox1。

•	三個 TextBox，命名為 TextBox1 到 TextBox3。

•	一個 CommandButton，命名為 CommandButton1。

您可以試試輸入 0 來隱藏一個資料欄。

Dim MyArray(2, 3) As String

Private Sub CommandButton1_Click()

'ColumnWidths requires a value for each column separated by semicolons

ListBox1.ColumnWidths = TextBox1.Text & ";" & TextBox2.Text & ";" & TextBox3.Text

End Sub

Private Sub TextBox1_Exit(ByVal Cancel as MSForms.ReturnBoolean)

'ColumnWidths accepts points (no units), inches or centimeters; make inches the default

If Not (InStr(TextBox1.Text, "in") > 0 Or InStr(TextBox1.Text, "cm") > 0) Then

TextBox1.Text = TextBox1.Text & " in"

End If

End Sub

Private Sub TextBox2_Exit(ByVal Cancel as MSForms.ReturnBoolean)

'ColumnWidths accepts points (no units), inches or centimeters; make inches the default

If Not (InStr(TextBox2.Text, "in") > 0 Or InStr(TextBox2.Text, "cm") > 0) Then

TextBox2.Text = TextBox2.Text & " in"

End If

End Sub

Private Sub TextBox3_Exit(ByVal Cancel as MSForms.ReturnBoolean)

'ColumnWidths accepts points (no units), inches or centimeters; make inches the default

If Not (InStr(TextBox3.Text, "in") > 0 Or InStr(TextBox3.Text, "cm") > 0) Then

TextBox3.Text = TextBox3.Text & " in"

End If

End Sub

Private Sub UserForm_Initialize()

Dim i, j, Rows As Single

ListBox1.ColumnCount = 3

Rows = 2

For j = 0 To ListBox1.ColumnCount - 1

For i = 0 To Rows - 1

MyArray(i, j) = "Row " & i & ", Column " & j

Next i

Next j

ListBox1.List() = MyArray           'Load MyArray into ListBox1

TextBox1.Text = "1 in"              '1-inch columns initially

TextBox2.Text = "1 in"

TextBox3.Text = "1 in"

End Sub


ControlTipText 屬性範例

下列範例使用三個 CommandButton（指令按鈕）及一個包含兩個 Page 物件的 MultiPage（活頁控制項）來示範 ControlTipText 的用法與效果。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 MultiPage，命名為 MultiPage1。

•	三個 CommandButton，命名為 CommandButton1 到 CommandButton3。

附註   對 MultiPage 裏的個別 Page 來說，它的 ControlTipText 只有在這個 MultiPage 擁有駐點，或者是 MultiPage 的現行 page 擁有駐點時才有作用。

Private Sub UserForm_Initialize()

MultiPage1.Page1.ControlTipText = "Here in page 1"

MultiPage1.Page2.ControlTipText = "Now in page 2"

CommandButton1.ControlTipText = "And now here's"

CommandButton2.ControlTipText = "a tip from"

CommandButton3.ControlTipText = "your controls!"

End Sub


CurLine，CurTargetX，CurX，Text 屬性範例

下列範例示範一個多行文字的 TextBox（文字方塊）的 CurLine，CurTargetX，及 CurX 等屬性值的意義。這些屬性值會在 KeyUp 事件中隨著使用者移動文字輸入點及改變選擇文字的長短而改變。

若要試用這個範例，請按照下列步驟﹕

1	將下列程式碼複製到表單的宣告區。

2	在表單中加入一個外框較大的 TextBox，命名為 TextBox1。

3	再加入三個外框較小的 TextBox，命名為 TextBox2，TextBox3，及 TextBox4，由上而下排成一直線。

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

TextBox2.Text = TextBox1.CurLine

TextBox3.Text = TextBox1.CurX

TextBox4.Text = TextBox1.CurTargetX

End Sub

Private Sub UserForm_Initialize()

TextBox1.MultiLine = True

TextBox1.Text = "Type your text here. User CTRL + ENTER to start a new line."

End Sub


HideSelection 屬性範例

'

下列範例使用兩個表單來示範如何使用 HideSelection 屬性。範例中允許使用者任意選擇 TextBox（文字方塊）裏的一段文字，或者利用 TAB 鍵來將駐點轉移要另一個控制項，或將駐點轉移到第二個表單上。程式中同時使用到 SetFocus 方法，及 EnterFieldBehavior，MultiLine，和 Value 等屬性。

若要試用這個範例，請按照下列步驟﹕

1. 將下列程式碼複製到表單的宣告區（除了最後一個事件副程式以外）。

2. 加入一個外框較大的 TextBox，命名為 TextBox1，一個 ToggleButton（切換按鈕），命名為 ToggleButton1，及一個 CommandButton（指令按鈕），命名為 CommandButton1。

3. 在專案中加入第二個表單，命名為 UserForm2。

4. 將最後一個事件副程式複製到 UserForm2 的宣告區。

5. 在第二個表單中，加入一個 CommandButton，命名為 CommandButton1。

6. 執行 UserForm1。

' ***** Code for UserForm1 *****

Private Sub CommandButton1_Click()

TextBox1.SetFocus

UserForm2.Show                             'Bring up the second form.

End Sub

Private Sub ToggleButton1_Click()

If ToggleButton1.Value = True Then

TextBox1.HideSelection = False

ToggleButton1.Caption = "Selection Visible"

Else

TextBox1.HideSelection = True

ToggleButton1.Caption = "Selection Hidden"

End If

End Sub

Private Sub UserForm_Initialize()

TextBox1.MultiLine = True

TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

'Fill the TextBox

TextBox1.Text = "SelText indicates the starting point of selected text, or the insertion point if no text is selected." _

& Chr$(10) & Chr$(13) & "The SelStart property is always valid, even when the control does not have focus. Setting SelStart to a value less than zero creates an error. " _

& Chr$(10) & Chr$(13) & "Changing the value of SelStart cancels any existing selection in the control, places an insertion point in the text, and sets the SelLength property to zero."

TextBox1.HideSelection = True

ToggleButton1.Caption = "Selection Hidden"

ToggleButton1.Value = False

End Sub

'

' ***** Code for UserForm2 *****

Private Sub CommandButton1_Click()

UserForm2.Hide

End Sub


Picture，PicturePosition 屬性範例

下列範例使用一個 ComboBox（下拉式清單方塊）來讓使用者選擇在控制項裏放置圖片的選項。使用者每選擇一次清單內提供的選項， CommandButton（指令按鈕）裏的圖片與標題便跟著變動。範例中使用到 AddItem 方法來填入 ComboBox 裏所提供的選項。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 Label（標籤），命名為 Label1。

•	一個 CommandButton，命名為 CommandButton1。

•	一個 ComboBox，命名為 ComboBox1。

Private Sub UserForm_Initialize()

Label1.Left = 18

Label1.Top = 12

Label1.Height = 12

Label1.Width = 190

Label1.Caption = "Select picture placement relative to the caption."

'Add list entries to combo box. The value of each entry matches the

'corresponding ListIndex value in the combo box.

ComboBox1.AddItem "Left Top"        'ListIndex = 0

ComboBox1.AddItem "Left Center"     'ListIndex = 1

ComboBox1.AddItem "Left Bottom"     'ListIndex = 2

ComboBox1.AddItem "Right Top"       'ListIndex = 3

ComboBox1.AddItem "Right Center"    'ListIndex = 4

ComboBox1.AddItem "Right Bottom"    'ListIndex = 5

ComboBox1.AddItem "Above Left"      'ListIndex = 6

ComboBox1.AddItem "Above Center"    'ListIndex = 7

ComboBox1.AddItem "Above Right"    'ListIndex = 8

ComboBox1.AddItem "Below Left"      'ListIndex = 9

ComboBox1.AddItem "Below Center"    'ListIndex = 10

ComboBox1.AddItem "Below Right"    'ListIndex = 11

ComboBox1.AddItem "Centered"        'ListIndex = 12

ComboBox1.Style = fmStyleDropDownList  'Use drop-down list

ComboBox1.BoundColumn = 0            'Combo box values are ListIndex values

ComboBox1.ListIndex = 0              'Set combo box to first entry

ComboBox1.Left = 18

ComboBox1.Top = 36

ComboBox1.Width = 90

ComboBox1.ListWidth = 90

'Initialize CommandButton1

CommandButton1.Left = 230

CommandButton1.Top = 36

CommandButton1.Height = 120

CommandButton1.Width = 120

'Note: Be sure to refer to a bitmap file that is present on your

'Note: system, and to include the path in the filename.

CommandButton1.Picture = LoadPicture("c:\windows\argyle.bmp")

CommandButton1.PicturePosition = ComboBox1.Value

End Sub

Private Sub ComboBox1_Click()

Select Case ComboBox1.Value

Case 0  'Left Top

CommandButton1.Caption = "Left Top"

CommandButton1.PicturePosition = fmPicturePositionLeftTop

Case 1  'Left Center

CommandButton1.Caption = "Left Center"

CommandButton1.PicturePosition = fmPicturePositionLeftCenter

Case 2  'Left Bottom

CommandButton1.Caption = "Left Bottom"

CommandButton1.PicturePosition = fmPicturePositionLeftBottom

Case 3  'Right Top

CommandButton1.Caption = "Right Top"

CommandButton1.PicturePosition = fmPicturePositionRightTop

Case 4  'Right Center

CommandButton1.Caption = "Right Center"

CommandButton1.PicturePosition = fmPicturePositionRightCenter

Case 5  'Right Bottom

CommandButton1.Caption = "Right Bottom"

CommandButton1.PicturePosition = fmPicturePositionRightBottom

Case 6  'Above Left

CommandButton1.Caption = "Above Left"

CommandButton1.PicturePosition = fmPicturePositionAboveLeft

Case 7  'Above Center

CommandButton1.Caption = "Above Center"

CommandButton1.PicturePosition = fmPicturePositionAboveCenter

Case 8  'Above Right

CommandButton1.Caption = "Above Right"

CommandButton1.PicturePosition = fmPicturePositionAboveRight

Case 9  'Below Left

CommandButton1.Caption = "Below Left"

CommandButton1.PicturePosition = fmPicturePositionBelowLeft

Case 10 'Below Center

CommandButton1.Caption = "Below Center"

CommandButton1.PicturePosition = fmPicturePositionBelowCenter

Case 11 'Below Right

CommandButton1.Caption = "Below Right"

CommandButton1.PicturePosition = fmPicturePositionBelowRight

Case 12 'Centered

CommandButton1.Caption = "Centered"

CommandButton1.PicturePosition = fmPicturePositionCenter

End Select

End Sub


控制項與工作表結合之範例

下列範例讓一個 ListBox（清單方塊）的內容對應到一張工作表。當使用者選擇了清單中的一個資料行時，程式會將該行的行索引值顯示在工作表的一個顯示格裏面。範例使用到 RawSource，BoundColumn 及 ControlSource 等屬性。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有一個 ListBox，命名為 ListBox1。並在工作表的 A1:E4 範圍內輸入資料，但要讓 A6 保持空白。

Private Sub UserForm_Initialize()

ListBox1.ColumnCount = 5

ListBox1.RowSource = "a1:e4"

ListBox1.ControlSource = "a6"

ListBox1.BoundColumn = 0          'Place the ListIndex into cell a6

End Sub


與文字選擇相關的屬性範例

下列範例說明和 [文字選擇] 相關的屬性（SelLength，SelStart，及 SelText）如何隨使用者動作而改變。當使用者移動文字輸入點或改變選擇文字的長短時，這些屬性都會跟著變動。範例中也使用到 Enabled 及 EnterFieldBehavior 屬性。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個外框較大的 TextBox（文字方塊），命名為 TextBox1。

•	三個外框較小的 TextBox，命名為 TextBox2 到 TextBox4，由上而下排成一列。

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

TextBox2.Text = TextBox1.SelStart

TextBox3.Text = TextBox1.SelLength

TextBox4.Text = TextBox1.SelText

End Sub

Private Sub UserForm_Initialize()

TextBox1.MultiLine = True

TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

TextBox1.Text = "Type your text here. Use CTRL+ENTER to start a new line."

End Sub


利用 Controls 集合物件來存取控制項之範例

下列範例示範如何使用 For Each...Next 迴圈來存取 Controls 集合物件裏的個別控制項。當使用者按下 CommandButton1 後，程式會使用 Move 方法將其它的控制項靠在表單的左邊界上，由上而下排成一直線。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有一個 CommandButton（指令按鈕），命名為 CommandButton1，及數個其它種類的控制項。

Dim CtrlHeight As Single

Dim CtrlTop As Single

Dim CtrlGap As Single

Private Sub CommandButton1_Click()

Dim MyControl As Control

CtrlTop = 5

For Each MyControl In Controls

If MyControl.Name = "CommandButton1" Then

'Don't move or resize this control.

Else

'Move method using named arguments

MyControl.Move Top:=CtrlTop, Height:=CtrlHeight, Left:=5

'Move method using unnamed arguments (left, top, width, height)

'MyControl.Move 5, CtrlTop, ,CtrlHeight

'Calculate top coordinate for next control

CtrlTop = CtrlTop + CtrlHeight + CtrlGap

End If

Next

End Sub

Private Sub UserForm_Initialize()

CtrlHeight = 20

CtrlGap = 5

CommandButton1.Caption = "Click to move controls"

CommandButton1.AutoSize = True

CommandButton1.Left = 120

CommandButton1.Top = CtrlTop

End Sub


Cycle 屬性範例

下列範例使用一個 Frame（框架）及一個含有兩個 Page 物件的 MultiPage（活頁控制項）來示範如何使用 Cycle 屬性。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	一個 Frame，命名為 Frame1。

•	一個 MultiPage，命名為 MultiPage1，裏面並包含有兩個 Page 物件，命名為 Page1 及 Page2。

•	兩個 CommandButton（指令按鈕），命名為 CommandButton1 及 CommandButton2。

請各放數個控制項在表單，Frame，及 MultiPage 的每一個 Page 之中。如此一來您便可以觀察到 Cycle 屬性對 Frame 和 MultiPage 之定位順序的影響。

使用者可以透過按下 TAB 鍵改變駐點來觀察 Cycle 屬性對定位順序的影響。使用者若按下 CommandButton1，可以將 Frame 以及 Page 裏的控制項一併納入 Cycle 屬性的影響範圍內﹔若按下 CommandButton2 則將它們秉除在 Cycle 屬性的影響範圍之外。

Private Sub RestrictCycles()

'Limit tab order for the Frame and Page objects

    Frame1.Cycle = fmCycleCurrentForm

    MultiPage1.Page1.Cycle = fmCycleCurrentForm

    MultiPage1.Page2.Cycle = fmCycleCurrentForm

End Sub

Private Sub UserForm_Initialize()

RestrictCycles

End Sub

Private Sub CommandButton1_Click()

'Extend tab order subforms (the Frame and Page objects)

    Frame1.Cycle = fmCycleAllForms

    MultiPage1.Page1.Cycle = fmCycleAllForms

    MultiPage1.Page2.Cycle = fmCycleAllForms

End Sub

Private Sub CommandButton2_Click()

RestrictCycles

End Sub


Controls 集合物件的 Move 方法範例

下列範例示範如何使用 Controls 集合物件的 Move 方法來移動表單裏所有控制項的位置。使用者只需按下 CommandButton（指令按鈕）便可以但到移動的結果。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有一個 CommandButton，命名為 CommandButton1，及數個其它種類控制項。

Private Sub CommandButton1_Click()

    'Move each control on the form right 25 points and up 25 points.

Controls.Move 25, -25

End Sub


Parent 屬性範例

下列範例示範如何使用 Parent 屬性來找出包含某個特定控制項的表單或控制項。

若要試用這個範例程式，請將下列程式碼複製到表單的宣告區，並確定表單中含有下列控制項﹕

•	兩個 Label（標籤），命名為 Label1 及 Label2。

•	一個 CommandButton（指令按鈕），命名為 CommandButton1。

•	隨意加入的數個控制項。

Dim MyControl As Object

Dim MyParent As Object

Dim ControlsIndex As Integer

Private Sub UserForm_Initialize()

    ControlsIndex = 0

    CommandButton1.Caption = "Get Control and Parent"

    CommandButton1.AutoSize = True

    CommandButton1.WordWrap = True

End Sub

Private Sub CommandButton1_Click()

    'Process Controls collection for UserForm

    Set MyControl = Controls.Item(ControlsIndex)

    Set MyParent = MyControl.Parent

    Label1.Caption = MyControl.Name

    Label2.Caption = MyParent.Name

    'Prepare index for next control on Userform

    ControlsIndex = ControlsIndex + 1

    If ControlsIndex >= Controls.Count Then

        ControlsIndex = 0

    End If

End Sub