国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

對 Microsoft Office 命令欄進行更多編程(2)

2024-07-21 02:23:55
字體:
來源:轉載
供稿:網友
可以使用如下所示的代碼測試該函數:

public sub testaddcomboboxtocommandbar()

    ' 用途:測試 addcomboboxtocommandbar 函數。

    dim strchoices(4) as string
    
    strchoices(1) = "vanilla"
    strchoices(2) = "chocolate"
    strchoices(3) = "strawberry"
    strchoices(4) = "other"
    
    if addcomboboxtocommandbar("tools", "favorite ice cream", _
        strchoices) = true then
        
        msgbox "組合框已成功添加。"
        
    else
    
        msgbox "未能添加組合框。"
        
    end if
    
end sub

禁用和隱藏命令欄與命令欄控件
開發 office 解決方案時,您可能需要防止用戶在與該解決方案關聯的某些命令欄和命令欄控件上單擊。例如,您可能需要防止用戶單擊“窗體”工具欄上的任何控件,以免修改您在 microsoft word 中創建的自定義窗體。您也可能需要為給定的解決方案禁用“工具”菜單上的“宏”命令。

將命令欄或命令欄控件的 enabled 屬性設置為 false 可禁用命令欄或命令欄控件;同樣,將命令欄或命令欄控件的 enabled 屬性設置為 true 可啟用命令欄或命令欄控件。

將命令欄或命令欄控件的 visible 屬性設置為 false 可隱藏命令欄或命令欄控件;同樣,將命令欄或命令欄控件的 visible 屬性設置為 true 可顯示命令欄或命令欄控件。

要嘗試此操作,請將以下代碼行輸入到“立即”窗口。每個代碼行將切換指定的命令欄或命令欄控件的啟用或可見狀態。如果在 outlook 或 microsoft visual basic® editor 中輸入此代碼,請務必使用 application.activeexplorer 或 application.vbe 術語。要返回到開始時的啟用或可見狀態,請確保將每行運行兩次。

application.commandbars("tools").enabled = _
  not application.commandbars("tools").enabled
application.commandbars("tools").controls("macro").enabled = _
  not application.commandbars("tools").controls("macro").enabled
application.commandbars("tools").controls("macro").visible = _
  not application.commandbars("tools").controls("macro").visible

定位命令欄
命令欄的 position 屬性指定命令欄在應用程序中的位置。msobarleft、msobartop、msobarright 和 msobarbottom 枚舉常數指定在應用程序的左邊、上邊、右邊或下邊顯示命令欄。msobarfloating 枚舉常數指定命令欄不靠接到應用程序的邊緣。msobarpopup 枚舉常數指定命令欄是彈出菜單。

以下函數更改所指定的命令欄的位置。

public function changecommandbarposition(byval strcommandbarname as string, _
        byval msoposition as msobarposition) as boolean

    ' 用途:更改命令欄的位置。
    ' 接受:
    '   strcommandbarname:要更改位置的命令欄名稱。
    ' 返回:如果命令欄移動成功,則為 ture。
    
    on error goto changecommandbarposition_err
    
    ' 將下一行代碼替換為:
    ' application.activeexplorer.commandbars.item(strcommandbarname).position = _
  msoposition <- 對于 outlook
    ' application.vbe.commandbars.item(strcommandbarname).position = _
      msoposition <- 對于 visual basic editor
    application.commandbars.item(strcommandbarname).position = msoposition
    
changecommandbarposition_end:
    
    changecommandbarposition = true
    exit function
        
changecommandbarposition_err:

    changecommandbarposition = false
    
end function

可以使用如下所示的代碼測試該函數:

public sub testchangecommandbarposition()

    ' 用途:測試 changecommandbarposition 函數。
    
    if changecommandbarposition("standard", msobarfloating) = true then
    
        msgbox "命令欄已成功移動。"
        
    else
    
        msgbox "未能移動命令欄。某些命令欄無法" & _
            "以某些方式移動。"
    
    end if
    
end sub

動態添加和刪除命令欄
有時需要將命令欄與特定 office 文檔關聯在一起。例如,您需要在特定 office 文檔打開時才顯示某些自定義命令欄,并在特定 office 文檔關閉時將其隱藏。要以編程方式執行此操作,使用 excel 就是一個不錯的示例。要測試該操作,請創建一個新的空白工作簿,然后將 sheet1 重命名為 commandbarinfo。將以下信息鍵入 commandbarinfo 工作簿中:



圖 4:在 excel 中動態創建命令欄的信息

在 visual basic editor 中,將以下代碼添加到與新空白工作簿關聯的新代碼模塊中:

public function createcommandbarpopup() as boolean

    ' 用途:根據 excel 工作表中提供的信息,
    ' 創建一個包含菜單項的命令欄彈出控件。
    
    ' 返回:如果命令欄彈出控件
    ' 成功添加,則為 true。
    
    dim objworksheet as excel.worksheet
    dim objcommandbarcontrol as office.commandbarcontrol
    dim objcommandbarpopup as office.commandbarpopup
    dim objcommandbarbutton as office.commandbarbutton
    dim introw as integer
    
    on error goto createcommandbarpopup_err
    
    ' 必須將包含命令欄信息的工作表
    ' 命名為“commandbarinfo”。
    set objworksheet = thisworkbook.sheets("commandbarinfo")
    
    ' 從以前的版本中刪除該控件的
    ' 所有現有實例。
    for each objcommandbarcontrol in application.commandbars.item("standard").controls
    
        if objcommandbarcontrol.caption = objworksheet.cells(1, 1) then
        
            objcommandbarcontrol.delete
            
        end if
        
    next objcommandbarcontrol
    
    set objcommandbarpopup = _
      application.commandbars.item("standard").controls.add(msocontrolpopup)
        
    objcommandbarpopup.caption = objworksheet.cells(1, 1)
    
    introw = 3
    
    ' 一直添加按鈕,直到標題用盡為止。
    do until objworksheet.cells(introw, 1) = ""
            
        with objcommandbarpopup
        
            set objcommandbarbutton = .controls.add(msocontrolbutton)
                    
            with objcommandbarbutton
                    
                    .caption = objworksheet.cells(introw, 1)
                    .onaction = objworksheet.cells(introw, 2)
                                                            
            end with
            
        end with
        
        introw = introw + 1
        
    loop
    
createcommandbarpopup_end:

    createcommandbarpopup = true
    exit function
    
createcommandbarpopup_err:
    
    createcommandbarpopup = false
    
end function

public function deletecommandbarpopup() as boolean

    ' 用途:根據 excel 工作表中提供的信息,
    ' 刪除命令欄彈出控件。
    
    ' 返回:如果命令欄彈出控件被
    ' 成功刪除,則為 true。
    
    dim objworksheet as excel.worksheet
    dim objcommandbarcontrol as office.commandbarcontrol
    
    on error goto deletecommandbarpopup_err
    
    ' 必須將包含命令欄信息的工作表
    ' 命名為“commandbarinfo”。
    set objworksheet = thisworkbook.sheets("commandbarinfo")
    
    ' 刪除該控件的所有現有實例。
    for each objcommandbarcontrol in application.commandbars.item("standard").controls
    
        if objcommandbarcontrol.caption = objworksheet.cells(1, 1) then
        
            objcommandbarcontrol.delete
            
        end if
        
    next objcommandbarcontrol
    
deletecommandbarpopup_end:

    deletecommandbarpopup = true
    exit function
    
deletecommandbarpopup_err:
    
    deletecommandbarpopup = false
    
end function

public sub testmacro()

    ' 用途:提供一個完整性測試宏。
    
    msgbox "這是測試宏。"
    
end sub

將以下代碼添加到新空白工作簿的 thisworkbook 模塊中:

private sub workbook_open()
    
    if createcommandbarpopup = false then
    
        msgbox "未能正確添加彈出菜單。"
    
    else
    
        msgbox "彈出菜單已成功添加。"
        
    end if

end sub

private sub workbook_beforeclose(cancel as boolean)
    
    if deletecommandbarpopup = false then
    
        msgbox "未能正確刪除彈出菜單。"
            
    else
    
        msgbox "彈出菜單已成功刪除。"
        
    end if
    
end sub

保存并關閉工作簿,然后重新打開該工作簿。請注意,“家務”彈出菜單已添加到“標準”工具欄中。還應注意,在關閉此工作簿時,“家務”彈出菜單將消失。

有關該技術的更詳細版本,請參閱 excel 資深專家 (mvp) john walkenbach 提供的解決方案,網址為 http://j-walk.com/ss/excel/tips/tip53.htm(英文)。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保山市| 苍南县| 崇信县| 嘉黎县| 塔河县| 精河县| 泾阳县| 荣成市| 永胜县| 南汇区| 襄樊市| 云南省| 稻城县| 勐海县| 五华县| 鄱阳县| 余干县| 镇巴县| 北流市| 祁门县| 贵德县| 临桂县| 汪清县| 安龙县| 鸡东县| 宣恩县| 陇西县| 张北县| 泗水县| 临颍县| 桃源县| 绥阳县| 商水县| 宁城县| 诸暨市| 新龙县| 曲沃县| 芦山县| 柯坪县| 莫力| 乌拉特后旗|