打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
電子書苑 (PowerPoint 訓練教材)
注意

當然,這個輸入方塊 InputBox 函數是獲得使用者資訊最簡單的方法。而要產生這些對話方塊,而更加彈性及複雜的方法是在 Visual Basic 編輯器中使用 自訂表單 功能。您可以在 Visual Basic編輯器 視窗中利用輔助說明瞭解如何使用這項 自訂表單 功能。

如何建立一個更容易執行巨集的使用者界面

雖然您可以在 巨集 對話方塊中按一下 執行 按鈕執行巨集(請參閱 <如何執行巨集> )。而如果執行巨集就如同在PowerPoint中,利用功能表列中的指令或工具列中的按鈕,這樣的操作不也是更方便嗎?

當您建立一個自訂的工具列或加入一個自訂的功能表在功能表列中,實際上您就是利用這相同的方式自訂Microsoft的工具列。在這工具列中可以包含按鈕、功能表或是組合這兩項。

如何將巨集加入到自訂的工具列

若要建立一個自訂的工具列並加入巨集到這工具列中,請依照下列的步驟操作:

  1. 請在 檢視 功能表中按一下 工具列 指令,然後再按一下 自訂 指令。
  2.  自訂 對話方塊中,按一下 工具列 標籤。
  3. 按一下 新增 按鈕。

  4. 請在 新增工具列 對話方塊中輸入一個新工具列的名稱。
  5. 按一下 確定 按鈕。
  6. 一個新的且是空的工具列即顯示在畫面上,但如果這個新工具列與 自訂 對話方塊重疊,請將指標移向該工具列的標題列上以拖曳方式,將這工具列搬移到適合的位置。

  7.  自訂 對話方塊中,按一下 指令 標籤,然後在左方的類別清單中選取 巨集 項目。此時在右方的 指令 窗格中顯示目前在這簡報中已錄製或寫下的巨集。如圖20-9。

  8. 圖20-9.在 自訂 對話方塊中,您可在左方的 類別 清單中選取 巨集 項目,然後在右方的 指令 窗格即顯示可供使用的巨集。
  9.  指令 窗格中,將常用的巨集逐一拖曳到您剛新增的新工具列視窗中。此時如下圖所顯示的自訂工具列,即顯示您拖曳進來的巨集名稱。

  10. 當您第一次將巨集加入到工具列時,這巨集的名稱即顯示在該工具列中。如果要加入一圖案在這巨集名稱旁,請在 自訂 對話方塊按一下 修改選取範圍 按鈕。
  11. 然後在 修改選取範圍 功能選項中,按一下 變更按鈕圖片 指令。
  12. 請在圖示清單中選取適合該巨集的圖案。
  13. 最後在 自訂 對話方塊中按一下 關閉 按鈕。如圖20-10所示的自訂工具列,即包含代表巨集的圖示按鈕。

  14. 圖20-10.這個自訂的工具列其中的巨集按鈕包含了文字與圖示。
如何將巨集加入到自訂的功能表

若要建立一個自訂的功能表並加入巨集到這功能表列中,請依照下列的步驟操作:

  1. 請在 檢視 功能表中按一下 工具列 指令,然後再按一下 自訂 指令。
  2.  自訂 對話方塊中,按一下 指令 標籤,然後在左方的類別清單中選取 新功能表 項目,此時在右方的 指令 窗格中即顯示 新功能表 
  3. 請將位在 指令 窗格中的 新功能表 拖曳到PowerPoint的功能表列中。您可以預測這個位在功能表上的位置,經由拖曳 新功能表 時所出現的超大型指標。您不妨試著將 新功能表 放在 視窗 功能表的左方。
  4. 當您將 新功能表 放在功能表中後,請將指標移向它並按一下滑鼠右鍵。(或按一下 修改選取範圍 按鈕。)
  5. 請在 名稱 文字方塊中給予這個功能表一個貼切的名稱(例如,專屬區),並按 ENTER 鍵。如下圖所示:

將巨集加入到您自訂的功能表(專屬區),請依照下列的步驟操作:

  1. 請在 自訂 對話方塊中,按一下 指令 標籤,並在 類別 選項中選取 巨集 項目。
  2. 在右方的 指令 窗格中,將某個巨集拖曳到您新增的功能表中,此時將出現一個小方塊,請將巨集拖曳到這個方塊中,做為這項新功能表的指令項目。
  3. 請按一下 關閉 按鈕結束這個 自訂 對話方塊。如下圖所示的在自訂功能表中的巨集指令。


建立進階的巨集以執行有條件的程式

為了建立更複雜且精密的巨集,例如,這個巨集可以讓它自己做判斷該執行那一列的程式碼,則您需要瞭解如何使用這決策控制的陳述式架構。這個控制架構決定程式碼執行的順序。一般來說,巨集一次只執行一列的程式碼,從最前面的一列逐一往下執行到最後一列,除非在這相繼而來的執行過程中被某個 事件 (Event)或 決策控制結構 的控制項所改變,而這控制結構將會引起這個程序重複執行某一列的程式碼,或執行跳離這個程序的程式碼(例如GoTo陳述式)。

  •  事件 是外部的元件,它將會影響電腦程式,例如,在指定的一段時間內讓使用者按一下指定的按鈕或開啟指定的檔案。

  •  決策控制 是處理電腦語言本身內部在判斷過程中的方法,其最基本的VBA控制架構就是 If...Then ...Else 

If...Then ...Else陳述式

 If...Then ...Else 不僅是最基本的決策控制陳述式,它同時也是最直覺式的,因為它非常清楚的表示它的用意。而決策控制的最簡單語法,是根據指定的條件是否存在。下列就是它的語法:

If條件1 Then執行程式碼1End If

當程式在執行這個決策控制的陳述式時,它首先會判斷 條件1 ,如果條件1是符合的(即真值),則程式繼續執行下一列的程式碼─程式碼1;但如果條件1是不符合的(即偽值),則程式將跳過程式碼1而直接執行在End If之下的第一列程式碼。換言之,當您指定的資料(或使用者輸入的資料)符合所定義的條件,則執行符合條件的程式,反之則執行不符合的程式。例如,下列所顯示的範例程式碼:如果x等於1,電腦就發出嗶的聲音,但如果x不等於1,則不執行任何程式。想要建立這個巨集(即程序)並使用變數,其方法就如同本章先前所描述的 <如何使用變數> ,請輸入下列的程式碼做為練習。之後,請給予不同的x數值,然後在 一般 工具列中按一下 執行Sub或Useform 按鈕執行這個程式並觀查其變化。

Sub ExampleI()    Dim x As Integer    x = 1    If x = 1 Then        Beep    End IfEnd Sub

 Beep  VBA 陳述式中最簡單的方法之一:只執行它被指定的動作。

兩個陳述式:ElseIf及Else,它們允許您加入其他的驗証資料在 If...Then...Else 的決策控制中。使用這兩個選擇性的陳述式可以讓您的程式碼根據目前的狀況(或使用者的輸入資料)產生不同的動作(或結果)。請參閱下列的範例程式碼(這由中括弧所包圍的選項是決策控制中的一部份。)

If條件1 Then	程式碼1[ElseIf條件2 Then	程式碼2][ElseIf條件3 Then	程式碼3]...[ElseIf條件N Then	程式碼N][Else	其他的程式碼]End If

當執行這個決策控制的程式時,將首先判斷 條件1 ,如果符合便執行 程式碼1 ,當執行完 程式碼1 則直接跳到 End If 之下的第一列程式碼。然而,如果不符合 條件1 ,這程式將跳到 ElseIf 陳述式並判斷是否符合 條件2 ,如果符合則執行 程式碼2 而且也將執行在 ElseIf 之下的第一列程式碼,如果不符合,這程式將跳到下一個 ElseIf 陳述式。這程式將繼續往下執行直到符合其中一個條件。

  •  ElseIf 的條件是真的(在這個例子中,將執行這區塊中的程式碼。)

  • 此決策控制程式將會往下執行直到找到某個符合條件的陳述式。(在這樣的例子中,沒有任何的程式碼在這決策控制中被執行。)

  • 此時這個程式會執行 Else 的陳述式程式碼。

在這 If...Then...Else 決策控制的陳述式中也可以只有一個 Else ,它總是放在最後的陳述式,而且它是沒有條件說明的,所以當所有的條件都不符合時將會執行 Else 的程式。

這裡有個較為複雜的範例,其使用 If...Then...Else 。它的程式碼顯示在這段落的下方,這程式碼的意思是:如果x等於-1而且y也等於-1,則請電腦發出嗶的聲音;但如果y等於0則電腦將不執行任何動作;如果x或y等於其他的數字,則請電腦出現一個訊息方塊,而且在方塊中顯示 Hi! 的文字訊息。再提醒您,想要建立這個巨集(即程序)並使用變數,其方法就如同本章先前所描述的 <如何使用變數> ,並請試著給予x與y不同的數字並觀查其變化。

Sub ExampleII()    Dim x As Integer    Dim y As Integer    x = -1    y = 0    If x = -1 And y = -1 Then        Beep    ElseIf y = 0 Then    Else        MsgBox prompt:="Hi!"    End IfEnd Sub

連結運算符號

Concatenation是個很常的英文字單字,在VBA程式中其表示 連結運算 符號,利用它可以用以連結不同的字串、變數或運算式。而在輸寫的語法上使用 & 符號連結不同的字串或其他的變數。您只需很簡單的將 & 符號輸入在想要連結的資料之間即可。例如,這接下來的範例程式碼就是:連結 Your name is 的字串與存放在 YourName 變數中的資訊,請注意在輸入連結符號 & 時,請前後都要空一空格,以區隔文字字串與變數。

"Your name is" & YourName

當您參閱上述的範列,即發現這連結運算符號讓您為使用者提供更多詳細的回覆資訊。而下列的範例程式碼,將以 Date 函數為例以取得目前的日期,並指定將這個日期資訊放到 Today 變數中,所以這 & 符號將連結文字字串 今天是西元  Today 變數及一個句號(.),而這一連串的資訊將會指定要顯示在訊息方塊中,所以當執行這個程式時,將不會只出現今天的日期,而是顯示 今天是西元1999/10/12. 。別忘了, Date 是VBA另個最簡單的函數名稱。

Sub日期()Dim Today As StringToday = DateMsgBox prompt:="今天是西元 " & Today & "."End Sub

比較運算符號

比較運算符號(Comparison Operators)是一群數學上的標記,您可以使用它們撰寫比較的陳述式。其中最簡單的比較運算符號是=(等於)符號,而其他的比較運算符號,請參閱下列的清單。

=等於
<>不等於
<小於
>大於
<=小於或等於
>=大於或等於

接下來的範例使用 If...Then...Else 決策控制檢查使用者是否在 輸入訊息方塊 中輸入有效的數字。如果輸入正確的數字,程式會將它與一個說明的文字字串連結並顯示在訊息方塊中;否則,電腦將會發出嗶的聲音並且出現一個訊息方塊,以告知使用者他所輸入的數字是不正確的。既然 InputBox 函數要顯示出文字字串(String)與提示輸入的數字範圍(即大於或等於的比較運算符號),您必須使用 Val 函數將字串轉換為數字。

注意

使用Val函數是將之後括弧內的資料轉換為數字(文字或可變的字串轉換為數字),例如,Val("10")=10。

Sub ShowAnswer()    Dim Answer As String    Answer = InputBox(Prompt:="Enter a number_from 1 through 99")    If Val(Answer) <= 99 And Val(Answer) >= 1 Then        MsgBox Prompt:="You entered: " & Answer & "."    Else        Beep        MsgBox Prompt:="You entered an invalid number."    End IfEnd Sub

使用VBA自動開啟Office程式

除了在PowerPoint中使用巨集完成例行的工作外,您也可以使用VBA程式與Microsoft Office的其他程式產生互動。例如,建立一個PowerPoint巨集,經由這個巨集從Excel中帶進一些數字,或利用巨集將Word文件放入PowerPoint中。

如何在PowerPoint中使用VBA自動開啟Office其他應用程式,請依照下列的操作步驟錄製一個PowerPoint巨集,將Excel的工作表嵌入到簡報中,並加入程式調整這個嵌入的物件大小,同時並允許使用者在輸入方塊訊息中輸入要嵌入的檔案路徑。在開始錄製前,請先確定這Excel工作表中有現成的資料以方便在PowerPoint放映投影片時顯示出來。

  1. 在PowerPoint中,切換到一張空白投影片以剛好顯示Excel的工作表,例如,選用一張 只有標題 投影片,同時請不要在這張投影上選取任何物件。
  2.  工具 功能表中按一下 巨集 指令,再按一下 錄製新巨集 按鈕,請將巨集名稱改為 InsertWorkbook 
  3. 請依照下列的步驟錄製巨集:在 插入 功能表中按一下 物件 指令,開啟 插入物件 對話方塊。

  4.  插入物件 對話方塊中,請選擇 檔案來源 項目。
  5. 按一下 瀏覽 按鈕開啟 瀏覽 對話方塊,請切換資料夾位置便選擇檔案,以嵌入到目前的PowerPoint簡報。
  6. 當選取Excel檔案後,請按一下 確定 按鈕,回到 插入物件 對話方塊。
  7. 請在 插入物件 對話方塊,按一下 確定 按鈕,此時嵌入的Excel工作表即顯示在PowerPoint的簡報上。
  8. 請按一下 停止錄製 按鈕。

在錄製完這個巨集後,請按 Alt+F11 組合鍵開啟Visual Basic編輯器檢視這個巨集的程式碼。當然這個巨集包含您嵌入工作表的路徑:D:\office2000\銷售預估一覽表.xls。而您也會注意到一些數值,其記錄這個嵌入物件的高度及寬度(或許不同)。然而,您的巨集的內容應該與下列所示的程式碼相去不遠。

Sub insertworkbook()'' 巨集錄製者: John Wu  錄製日期: 1999/10/12'    ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(Left:=120#, Top:=110#, Width:=480#, Height:=320#, _    FileName:="D:\office2000\銷售預估一覽表.xls", Link:=msoFalse).Select    With ActiveWindow.Selection.ShapeRange        .Left = 154.125        .Top = 103.125        .Width = 411.75        .Height = 333.75    End WithEnd Sub

由於這個巨集不需要一些冗長的程式碼,請刪除下列所指定的程式碼(因為這將更容易的調整物件的大小):

With ActiveWindow.Selection.ShapeRange        .Left = 154.125        .Top = 103.125        .Width = 411.75        .Height = 333.75

現在您的巨集內容應該與下列所示的程式碼相似吧!

Sub insertworkbook()'' 巨集錄製者: John Wu  錄製日期: 1999/10/12' ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(Left:=120#, Top:=110#, Width:=480#, Height:=320#, _    FileName:="D:\office2000\銷售預估一覽表.xls", Link:=msoFalse).SelectEnd Sub

上述的引數 Width  Height 是設定 Workbook 物件的屬性,就是設定這工作表。要以手動方式調整工作表的大小,請選取這個物件後,在 編輯 功能表中按一下 工作表 物件 指令(或按一下滑鼠右鍵),再按一下 編輯 指令,此時請拖曳這嵌入物件的 控點 加大或縮小工作表的顯示內容,然後在這物件的外圍按一下滑鼠左鍵結束編輯這個物件。當您插入這個物件後,想要自動顯示較大的嵌入物件,您可以在這個巨集中增加 Width  Height 的數值。請注意,如果您是在VGA的顯示模式下,則 Width  Height 最大值分別是640與480。

如果想要在另一張投影片執行您剛剛所錄製的巨集執行這個巨集,將會插入相同的Excel工作表在這目前的投影片上,因為這是受到 ActiveWindow 這物件的程式碼所影響的。而在某些案例中,這嵌入的工作表有時會顯示出不妥當的形狀,而如果您輸入下列的四列程式碼請立即加在最後一列程式碼之後 End Sub 之前,即可以根據原始大小縮放這個物件以解決前面所提到的問題。

With ActiveWindow.Selection.ShapeRange            .ScaleHeight 1, msoCTrue            .ScaleWidth 1, msoCTrueEnd With

所以您目前的巨集內容,應該下列所示:Sub insertworkbook()'' 巨集錄製者: John Wu 錄製日期: 1999/10/12' ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(Left:=120#, Top:=110#, Width:=480#, Height:=320#, _ FileName:="D:\office2000\銷售預估一覽表.xls", Link:=msoFalse).Select With ActiveWindow.Selection.ShapeRange .ScaleHeight 1, msoCTrue .ScaleWidth 1, msoCTrue End With End Sub

如果要讓使用者可以在輸入方塊中,自行輸入要嵌入的Excel工作表的檔案路徑,請在這個巨集的註解文字之下加入這幾列的程式碼:

Dim WhichWorkbook As String    WhichWorkbook = InputBox(prompt:="請輸入嵌入至簡報的Excel工作表路徑及檔案名稱(.xls).")

請將嵌入Excel工作表的路徑改為 WhichWorkbook 變數,所以現在 FileName 的參數應該如下所示:

FileName:=WhichWorkbook

最後,您的巨集內容應該如下所示:

Sub insertworkbook()'' 巨集錄製者: John Wu  錄製日期: 1999/10/12'    Dim WhichWorkbook As String    WhichWorkbook = InputBox(prompt:="請輸入嵌入至簡報的Excel工作表路徑及檔案名稱(.xls).")    ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(Left:=120#, Top:=110#, Width:=480#, Height:=320#, _    FileName:=WhichWorkbook, Link:=msoFalse).Select        With ActiveWindow.Selection.ShapeRange            .ScaleHeight 1, msoCTrue            .ScaleWidth 1, msoCTrue        End With  End Sub

當您完成這個巨集後,請在 檔案 功能表中按一下 關閉並回到Microsoft PowerPoint 指令。

請切換到另一張投影片,然後執行 insertworkbook 巨集,此時將會出現 輸入訊息方塊 ,請輸入要嵌入的Excel工作表檔案路徑,但別忘了要加上.xls副檔名。

注意

如果想要在PowerPoint中建立自動的解決方案對策,請參閱:

  • Visual Basic編輯器的線上輔助說明。

  • 由Christine Solomon編著的Microsoft Office Developer's Handbook,由Microsoft Press出版。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
G65/G66/G67巨集程式
VBA粘贴Excel选定工作表范围到活动的PowerPoint幻灯片中(PowerPoint VBA)
Excel | 如何判断某个工作表是否被选中呢? | 工作表,选中,判断,某个,SelectedSheets
将指定单元格显示到窗口左上方
用VBA去操作PowerPoint
绘制多边形程序的终篇
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服