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