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