12.1 使用對(duì)話框
對(duì)話框有Word 內(nèi)置的對(duì)話框,用戶也可以自定義需要的對(duì)話框。
12.1.1 顯示 Word 內(nèi)置對(duì)話框
用 Visual Basic 可顯示一個(gè)內(nèi)置對(duì)話框以獲取用戶輸入,或者 控制 Word.Dialog 對(duì)象的 Show 方法顯示和處理任一來(lái)自 Word 內(nèi) 置對(duì)話框的操作。通過(guò)指定 WdWordDialog 常量的 Dialogs 屬性可 訪問某一Word 內(nèi)置對(duì)話框。例如,下列宏顯示【打開】對(duì)話框。
Dialogs(wdDialogFileOpen).Show
選定文件并單擊【確定】按鈕后,文件被打開(該操作被執(zhí)行)。 下例顯示打印對(duì) 話框。
Dialogs(wdDialogFilePrint).Show
設(shè)置 DefaultTab 屬性可以訪問 Word 對(duì)話框的特定制表符位 置。下例顯示【格式】菜單下【邊框和底紋】對(duì)話框中的頁(yè)邊框項(xiàng)。
With Dialogs(wdDialogFormatBordersAndShading)
.DefaultTab =
wdDialogFormatBordersAndShadingTabPageBorder
.Show
End With
Display 方法顯示對(duì)話框但不處理來(lái)自對(duì)話框的操作。如果要用 對(duì)話框來(lái)提示用戶并返回設(shè)置,此方法比較有用。例如,下列宏指 令顯示【選項(xiàng)】對(duì)話框中的【用戶信息】選項(xiàng)卡,并且返回和顯示 用戶名稱。
With Dialogs(wdDialogToolsOptionsUserInfo)
.Display
MsgBox .Name
End With
如在上例中修改了用戶名稱,則這個(gè)變化不會(huì)影響對(duì)話框的設(shè) 置。用 Execute 方法可以執(zhí)行一個(gè)對(duì)話框中的設(shè)置,但不顯示該對(duì) 話框。下例顯示了【用戶信息】對(duì)話框,如果名稱不是空字符串,則使用 Execute 方法設(shè)置對(duì)話框中的項(xiàng)目。
With Dialogs(wdDialogToolsOptionsUserInfo)
.Display
If .Name <> "" Then .Execute
End With
12.1.2 返回和修改對(duì)話框設(shè)置
返回或修改對(duì)話框設(shè)置之前, 需要標(biāo)識(shí)對(duì)話框。用帶有 WdWordDialog 常量的 Dialogs 屬性完成這一操作。下例返回一個(gè) 參考格式菜單中段落對(duì)話框的 Dialog 對(duì)象。
Set myDialog = Dialogs(wdDialogFormatParagraph)
獲得 Dialog 對(duì)象后即可返回或設(shè)置對(duì)話框中的選項(xiàng)。下例顯示 從段落對(duì)話框獲得的右縮進(jìn)值。
Set myDialog = Dialogs(wdDialogFormatParagraph)
Msgbox "Right indent = " & myDialog.RightIndent
許多Word 內(nèi)置對(duì)話框具有這樣的參數(shù),它們可使用戶從對(duì)話框 中取值或?qū)ζ溥M(jìn)行設(shè)置(例如,上例中的 RightIndent)。
返回對(duì)話框設(shè)置的同時(shí),還可以設(shè)定對(duì)話框的設(shè)置。下例在【段 落】對(duì)話框中的【與下段同】復(fù)選框做了標(biāo)記。
With Dialogs(wdDialogFormatParagraph)
.KeepWithNext = 1
.Execute
End With
上例將【與下段同】檢查框設(shè)為有效,并用 Execute 方法設(shè)置 了對(duì)話框中的值。下列 Visual Basic 指令和上例的四條指令等價(jià)。
Selection.Paragraphs(1).KeepWithNext = True 對(duì)于修改用屬性或方法設(shè)置的值而言,用 Dialog 對(duì)象并非有效。
用戶可用 Update 方法確定對(duì)話框中的值是否和當(dāng)前值一致。如 果已經(jīng)在宏中設(shè)置了對(duì)話框變量的值,只需要返回或修改當(dāng)前設(shè)置, 可用 Update 方法。
12.1.3 預(yù)定對(duì)話框設(shè)置
上例返回和設(shè)定了對(duì)話框的值,但沒有顯示該對(duì)話框。用戶還可 在用 Show 方法前,修改 Word 內(nèi)置對(duì)話框的設(shè)置。例如,可在顯 示【編輯】菜單中的【替換】對(duì)話框之前修改要查找的文字。下例 顯示【替換】對(duì)話框,并在【查找內(nèi)容】編輯框中填入【Blue】。
With Dialogs(wdDialogEditFind)
.Find = "Blue"
.Show
End With
下例顯示【打開】對(duì)話框及所有文件名。
With Dialogs(wdDialogFileOpen)
.Name = "*.*"
.Show
End With
12.1.4 檢查一個(gè)對(duì)話框的關(guān)閉方式
由 Show 和 Display 方法返回的值顯示了對(duì)話框關(guān)閉時(shí)所單擊 的按鈕。下例顯示【分隔符】對(duì)話框,如單擊【確定】按鈕,則在 狀態(tài)欄中顯示一條消息。
If Dialogs(wdDialogInsertBreak)Show = -1 Then
StatusBar = "Break inserted"
End If
表12-1 列出了返回的值與顯示對(duì)話框關(guān)閉時(shí)所單擊的按鈕的關(guān)系。
12.1.5 自定義對(duì)話框
創(chuàng)建一個(gè)自定義對(duì)話框非常簡(jiǎn)單,方法如下:
(1)打開Visual Basic 編輯器,選定一個(gè)文檔的工程。
(2)單擊【插入】菜單中的【用戶窗體】命令,此時(shí)彈出一個(gè) 名為UserForm1 的窗體,并自動(dòng)彈出一個(gè)工具箱。
(3)根據(jù)需要,在工具箱中選擇相應(yīng)的控件,繪制需要的對(duì)象, 如圖12-1 所示。
(4)選中某個(gè)對(duì)象,單擊右鍵,在彈出的快捷菜單中選擇【屬 性】菜單項(xiàng),打開【屬性】窗口,設(shè)置各個(gè)對(duì)象的屬性。如字體、 顯示的標(biāo)題、名稱等。
設(shè)置完畢后,就可以在某個(gè)過(guò)程中調(diào)用自定義的對(duì)話框,調(diào)用的 語(yǔ)句是:
UserForm1.show
如果要使對(duì)話框中的兩個(gè)按鈕響應(yīng)用戶的操作,還需要為它們添 加代碼。方法是:雙擊該按鈕,即可打開【代碼】窗口,然后選擇相應(yīng)的事件,添加合適的代碼,如圖12-2 所示。
如果需要,還可以對(duì)窗體中的各個(gè)對(duì)象的各個(gè)事件添加代碼,以 使對(duì)象響應(yīng)不同的事件。其中窗體本身也是一個(gè)對(duì)象,一樣有各種 不同的事件,也需要設(shè)置其相應(yīng)的屬性。具體的操作方法,用戶可 以參考有關(guān)的Visual Basic 編程的書籍。
按下F5 鍵,或者有個(gè)過(guò)程調(diào)用了該對(duì)話框,即可顯示如圖12-3 所示的對(duì)話框,輸入正確的密碼后單擊【確定】按鈕,即可彈出相 應(yīng)的消息框。
如果單擊【退出】按鈕,將退出該對(duì)話框。