用戶在圖12-6 中可以看到,如果僅僅只靠設(shè)置對(duì)象的屬性,還 不能設(shè)置出滿意的窗體。如列表框和組合列表框的選項(xiàng)就無(wú)法通過(guò) 設(shè)置屬性來(lái)設(shè)置。此時(shí)需要調(diào)用對(duì)象的各種方法來(lái)設(shè)置。
對(duì)象的方法很多,對(duì)象不同,方法也不盡相同。列表框和組合列 表框都有一個(gè)AddItem 方法,通過(guò)調(diào)用這個(gè)方法,即可在列表框和 組合列表框中加入相應(yīng)的選項(xiàng)。
為了在文檔打開時(shí)能夠自動(dòng)對(duì)窗體的對(duì)象進(jìn)行初始化,可以在 AutoOpen 過(guò)程中調(diào)用,其代碼如下:
Public Sub AutoOpen()
ListBox1.AddItem "黨員"
ListBox1.AddItem "團(tuán)員"
ListBox1.AddItem "民主黨派"
ListBox1.AddItem "無(wú)黨派人士"
ComboBox1.AddItem "北京"
ComboBox1.AddItem "廣西"
ComboBox1.AddItem "廣東"
ComboBox1.AddItem "陜西"
ComboBox1.AddItem "山西"
ComboBox1.AddItem "山東"
End Sub
通過(guò)以上代碼,在打開文檔時(shí)如果設(shè)置了運(yùn)行自動(dòng)宏,即可顯示如圖12-7 所示的 界面。
如果【選項(xiàng)】對(duì)話框的【編輯器】選項(xiàng)卡中設(shè)置了【自動(dòng)列出成 員】復(fù)選框,那么在輸入某個(gè)對(duì)象的名稱后輸入“.”,即可在屏幕上列出該對(duì)象的方法和屬性,圖12-8 所示的是自動(dòng)組合列表框的成 員。
對(duì)象的方法前面由圖標(biāo)來(lái)標(biāo)識(shí),其他的為該對(duì)象的屬性。下面 介紹VBA 中經(jīng)常用到的一些方法及其意義。
Add 方法
用于在 TabStrip 或多頁(yè)中添加或插入一個(gè)標(biāo)簽或頁(yè),或通過(guò)其 程序設(shè)計(jì)標(biāo)識(shí)符 (ProgID)在頁(yè)或窗體中添加控件。
- 語(yǔ)法:
對(duì)于多頁(yè)和 TabStrip :Set Object = object.Add( [ Name [, Caption [, index]]])
對(duì)于其他控件:Set Control = object.Add( ProgID [, Name [, Visible]])
Add 方法的語(yǔ)法包括表12-6 所示成分。
AddItem 方法
對(duì)于單列的列表框或組合框,在列表中添加一項(xiàng)。對(duì)于多列的列 表框或組合框,在列表中添加一行。 - 語(yǔ)法
Variant = object.AddItem [ item [, varIndex]]
AddItem 方法的語(yǔ)法有表12-7 所示的成分。
Clear 方法
從一個(gè)對(duì)象或集合中刪去所有對(duì)象。 - 語(yǔ)法
object.Clear
object 為必需的有效對(duì)象。
Copy 方法
將對(duì)象的內(nèi)容復(fù)制到剪貼板上。 - object.Copy
object 為必需的有效對(duì)象。
Cut 方法
從一個(gè)對(duì)象中刪除選定的信息并將它送到剪貼板。
語(yǔ)法
object.Cut
object 為必需的有效對(duì)象。
DropDown 方法
顯示組合框的列表區(qū)。
語(yǔ)法
object.DropDown
object 為必需的有效對(duì)象。
在組合框中使用DropDown 方法打開組合框中的列表。
GetFormat 方法
返回一個(gè)整數(shù)值,表明指定的格式是否在 DataObject 上。
語(yǔ)法
Boolean = object.GetFormat(format)
GetFormat 方法的語(yǔ)法成分如表12-8 所示。
設(shè)置
format 的設(shè)置如表12-9 所示。
GetFromClipboard 方法
從剪貼板復(fù)制數(shù)據(jù)到 DataObject。 - 語(yǔ)法
String = object.GetFromClipboard( ) - 說(shuō)明
DataObject 可以包含多個(gè)數(shù)據(jù)項(xiàng),但每個(gè)數(shù)據(jù)項(xiàng)必須有不同的 格式。例如,DataObject 可以包含一個(gè)文本項(xiàng)和用戶定義項(xiàng),但不 能同時(shí)有兩個(gè)文本項(xiàng)。
GetText 方法
用特定的格式在 DataObject 中檢索一文本串。 - 語(yǔ)法
String = object.GetText([ format])
GetText 方法的語(yǔ)法成分如表12-10 所示。
說(shuō)明
DataObject 支持多種格式,但只支持每種格式的一個(gè)數(shù)據(jù)項(xiàng)。 例如,DataObject 可能包含一個(gè)文本項(xiàng)和一個(gè)自定義格式的項(xiàng);但 不能包含兩個(gè)文本項(xiàng)。
如果不指定格式,GetText 方法要求從 DataObject 中得到文本 格式的信息。
Item 方法
返回集合的一個(gè)成員,無(wú)論按位置,還是按名稱。
語(yǔ)法
Set Object = object.Item(collectionindex)
Item 方法的語(yǔ)法成分如表12-11 所示。
設(shè)置
collectionindex 可以是字符串,也可以是整數(shù)。如果是字符串, 則必須是一個(gè)有效的成員名。如果是一個(gè)整數(shù),其最小值為 0,而 最大值比集合中的項(xiàng)目數(shù)少 1。
Move 方法
移動(dòng)一個(gè)窗體或控件,或者移動(dòng)Controls 集合中的所有控件。
語(yǔ)法
對(duì)于窗體或控件
object.Move([ Left [, Top [, Width [, Height [, Layout]]]]])
對(duì)于 Controls 集合
object.Move(X, Y)
Move 方法的語(yǔ)法成分如表12-12 所示。
設(shè)置
Left、Top、Width、Height、X 和Y 參數(shù)的最大值和最小值,隨應(yīng)用程序的不同而 不同。
Paste 方法
把剪貼板上的內(nèi)容傳送到一個(gè)對(duì)象。
語(yǔ)法
object.Paste
說(shuō)明
將粘貼到組合框或者文本框中的數(shù)據(jù)作為文本來(lái)處理。
粘貼方法若用于窗體,可將任何對(duì)象粘貼到窗體上。
PutInClipboard 方法
將數(shù)據(jù)從 DataObject 移到剪貼板上。
RedoAction 方法
其作用與目前大多數(shù)撤消操作相反。應(yīng)用程序的不同而 不同。
語(yǔ)法
Boolean = object.RedoAction
說(shuō)明
重復(fù)取最后一個(gè)撤消操作的相反結(jié)果,這個(gè)撤消不一定是最后一個(gè)采取的動(dòng)作。不是所有的操作都能撤消的。
例如,往文本框中粘貼文本之后,然后選擇【撤消】命令刪除這段文本,那么用【重復(fù)】命令又可以把這段文本放回去。
如果 RedoAction 成功,它返回 True。
Remove 方法
從集合中刪除一個(gè)成員,或者從框架、頁(yè)面或窗體中刪除一個(gè)控件。
語(yǔ)法
object.Remove(collectionindex)
Remove 方法的語(yǔ)法成分如表12-13 所示。
說(shuō)明
此方法只刪除在運(yùn)行時(shí)間添加的控件。但如果想刪除在設(shè)計(jì)時(shí)間添加的控件,則會(huì) 出錯(cuò)。
RemoveItem 方法
從列表框或組合框的列表中刪去一行。
語(yǔ)法
Boolean = object.RemoveItem index
RemoveItem 方法的語(yǔ)法有以下幾個(gè)成分:
如果列表框被數(shù)據(jù)連接(也就是,當(dāng)RowSource 屬性為列表框規(guī)定了數(shù)據(jù)源時(shí)),此方法不能從該列表中刪去一行。
Repaint 方法
重畫窗體或頁(yè),更新顯示。
語(yǔ)法
Boolean = object.Repaint
說(shuō)明
倘若一個(gè)對(duì)象的內(nèi)容或者外貌嚴(yán)重地改變了,而且不想等待到系統(tǒng)自動(dòng)重畫這個(gè)區(qū)域。那么 Repaint 方法很有用。
Scroll 方法
移動(dòng)對(duì)象上的滾動(dòng)條。
語(yǔ)法
object.Scroll([ ActionX [, ActionY]])
Scroll 方法的語(yǔ)法如表12-15 所示。
設(shè)置
ActionX 和 ActionY 的設(shè)置見表12-16。
SetDefaultTabOrder 方法
用默認(rèn)的自上向下和自左向右的 Tab 鍵順序來(lái)為窗體上的每個(gè)控件設(shè)置TabIndex 屬性。
語(yǔ)法
object.SetDefaultTabOrder
說(shuō)明
Microsoft 窗體設(shè)置的 Tab 鍵順序是從窗體左上角的控件開始, 向右移動(dòng)。離窗體左邊緣越近的越是排在 Tab 鍵順序的前面。如果有不止一個(gè)控件到窗體左邊界的距離相同,那么 Tab 鍵順序的值便 自上向下地分配,誰(shuí)在上面誰(shuí)就在前面。
SetFocus 方法
將焦點(diǎn)移動(dòng)到對(duì)象的實(shí)例中。
語(yǔ)法
object.SetFocus
說(shuō)明
若設(shè)置焦點(diǎn)失敗,焦點(diǎn)又回到原來(lái)的對(duì)象上,并產(chǎn)生一個(gè)錯(cuò)誤。
在默認(rèn)情況下,設(shè)置焦點(diǎn)到一個(gè)控件并不激活該控件的窗口,也沒(méi)有將其置于其他控件的上面。
SetFocus 方法對(duì)于空的框架以及包含其他控件的框架都有效。 空的框架自身接受焦點(diǎn),任何后續(xù)的鍵盤事件都作用于該框架。在 包含其他控件的框架中,焦點(diǎn)移到該框架中的第一個(gè)控件,后續(xù)的 鍵盤事件皆作用于擁有焦點(diǎn)的控件。
SetText 方法
用特定的格式復(fù)制文本串到 DataObject。
語(yǔ)法
object.SetText(StoreData [, format])
SetText 方法的語(yǔ)法成分如表12-17 所示。
StartDrag 方法
初始化針對(duì) DataObject 的拖放操作。
語(yǔ)法
fmDropEffect=Object. StartDrag([Effect as fmDropEffect])
StartDrag 方法的語(yǔ)法成分如表12-18 所示。
設(shè)置
Effect 的設(shè)置如表12-19 所示。
說(shuō)明
拖動(dòng)操作開始于當(dāng)前鼠標(biāo)指針位置以及當(dāng)前鍵盤狀態(tài),而結(jié)束于用戶釋放鼠標(biāo)按鍵。拖動(dòng)操作的最終效果取決于為放置目標(biāo)所選的作用。
例如,控件的 MouseMove 事件可能包含 StartDrag 方法。當(dāng)用戶單擊控件并移動(dòng)鼠標(biāo)時(shí),鼠標(biāo)箭頭將改變,以示Effect 對(duì)于放置目標(biāo)是否有效。
UndoAction 方法
與最近的動(dòng)作(必須是支持【撤消】命令的)相反的動(dòng)作。
語(yǔ)法
Boolean = object.UndoAction
ZOrder 方法
將對(duì)象放在 z-順序的前面或后面。z 順序是在窗體的z 軸(深度) 方向上,窗體上的控件的視覺層次。z 順序可決定什么控件在其他控件之前。
語(yǔ)法
object.ZOrder([ zPosition])
ZOrder 方法的語(yǔ)法成分如表12-20 所示。
設(shè)置
zPosition 的設(shè)置如表12-21 所示。
說(shuō)明
當(dāng)幾個(gè)窗體和控件出現(xiàn)在用戶面前時(shí),z-順序決定它們的層疊方 式。在 z-順序后面的項(xiàng)被它前面的項(xiàng)遮蓋;在z-順序前面的項(xiàng)總出 現(xiàn)它后面的項(xiàng)的上面。當(dāng) zPosition 參數(shù)被略去時(shí),對(duì)象便被帶到 了前面。
在【設(shè)置】模式中用【置前】或【置后】命令設(shè)置 z-順序!局 前】命令與使用 ZOrder 方法將對(duì)象放在z-順序之前的效果相同。 【置后】命令與使用ZOrder 方法將對(duì)象放在零序號(hào)之后的效果相同。
該方法不影響 Controls 集合中控件的內(nèi)容或順序。
注意:
疊放命令(如【置后】或【置前】命令)不能重復(fù)或撤消。例如, 若選擇一個(gè)對(duì)象并單擊快捷菜單上的【下移一層】命令,則該操作 將不能重復(fù)或撤消。