Filed under: Office 2007學習筆記

Ribbon(功能區 )-EditBox

by chijanzen on 十月 5th, 2008 | View: 4,727 views

Tags
  • No Tags
Share Comments (18)
索   引 Office 2007 筆記
主   題 Ribbon(功能區 )-EditBox
版   本 >= 12.0(Office 2007)
說   明 這次範例為 Button 與 EditBox 的組合運用,示範 ditBox  輸入完文字後如何建立onAction 回呼程序及EditBox 如何使用getText 屬性來建立回呼程序進而改變 EditBox  文字內容。這次是基本的 EditBox 練習,下一次就利用這個架構來建立一個Google 搜尋的範例。
參   考

複製以下程式碼到ThisWorkbook

Code
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
onLoad="OnLoad" >
<ribbon startFromScratch="false">
<tabs>
<tab id="tabchijanzen" label="chijanzen"
		insertBeforeMso="TabHome">
<group id="grpGoogleSearch" label="Google Search">
<button id="Box01" size="large" image="beveled_orange" />
<editBox id="editBox01" label=":"
		screentip="editBox test"
		supertip="Please enter keywords"
		maxLength="30"
		onChange="OnChangeEditBox"
	getText="MacroGetText"/>
<button id="Box02" size="large" image="searchicon"
		supertip="Click It!"
		onAction="Callsearch" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>

複製以下程式碼到Module

Code

Dim ebox_text As String
Public theRibbon As IRibbonUI
 


Sub OnLoad(ribbon As IRibbonUI)
  Set theRibbon = ribbon
End Sub
 

'Callback for editBox01 onChange
Sub OnChangeEditBox(control As IRibbonControl, text As String)
  ebox_text = text
  Range("A5") = ebox_text
End Sub
 

'Callback for Box02 onAction
Sub Callsearch(control As IRibbonControl)
  If ebox_text = "" Then
    MsgBox "您未輸入字串"
  Else
    MsgBox ebox_text
  End If
  '按查詢按鈕後將 editBox01 清空
  '使用InvalidateControl 方法讓使 "editBox01"控制項無效, _
   然後重新整理 UI,進而再回呼editBox01 getText程序
  ebox_text = ""
  theRibbon.InvalidateControl ("editBox01")
End Sub
 

'Callback for editBox01 getText
Sub MacroGetText(control As IRibbonControl, ByRef returnedVal)
'設定 editBox01 方塊中的文字
  returnedVal = ebox_text
End Sub
 

File download

Code

RibbonEditBox 屬性

名稱 說明
CanRaiseEvents 取得值,指出元件是否能引發事件。 (繼承自 Component)。
Container 取得包含 Component 的 IContainer。 (繼承自 Component)。
DesignMode 取得值,指出 Component 目前是否處於設計模式。 (繼承自 Component)。
Enabled 取得或設定值,指出此 RibbonControl 是否已啟用。 (繼承自 RibbonControl)。
Events 取得附加在這個 Component 上的事件處理常式清單。 (繼承自 Component)。
Id 取得 Microsoft Office 用來識別這個 RibbonControl 物件的字串。 (繼承自 RibbonControl)。
Image 取得或設定顯示在編輯方塊上的影像。
ImageName 取得或設定可在 LoadImage 事件處理常式中用來識別影像的名稱。
KeyTip 取得或設定這個 RibbonEditBox 的鍵盤快速鍵。
Label 取得或設定出現在這個 RibbonEditBox 上的文字。
MaxLength 取得或設定值,指出此 RibbonEditBox 中的每個項目允許的最大字元數。
Name 取得或設定這個 RibbonComponent 的名稱。 (繼承自 RibbonComponent)。
OfficeImageId 取得或設定要顯示在按鈕上的影像 (如果您想要使用內建 Microsoft Office 圖示的話)。
Parent 取得 RibbonComponent,表示這個 RibbonComponent 的父代 (Parent)。 (繼承自 RibbonComponent)。
Ribbon 取得包含控制項階層架構的最上層 Ribbon 物件。 (繼承自 RibbonComponent)。
RibbonUI 基礎架構。 取得 Microsoft Office 應用程式提供給功能區擴充性程式碼的 IRibbonUI 執行個體。 (繼承自 RibbonComponent)。
ScreenTip 取得或設定當使用者將游標移至 RibbonEditBox 上方時所顯示的提示文字。
ShowImage 取得或設定值,指出與 RibbonEditBox 關聯的影像是否可見。
ShowLabel 取得或設定值,指出這個 RibbonEditBox 的標籤是否可見。
Site 取得或設定 Component 的 ISite。 (繼承自 Component)。
SizeString 取得或設定決定 RibbonEditBox 大小的字串。
SuperTip 取得或設定當使用者將游標移至 RibbonEditBox 上方時所顯示的多行提示文字。
Tag 取得或設定與這個 RibbonComponent 關聯的應用程式特定資料。 (繼承自 RibbonComponent)。
Text 取得或設定當編輯方塊第一次出現時顯示在這個 RibbonEditBox 中的文字。
Visible 取得或設定值,指出此 RibbonControl 是否為可見的。 (繼承自 RibbonControl)。

 

File download

Code

檔案下載

Popularity: 10%

About the Author
    網路化名: chijanzen、中國龍、邪兵衛 經歷: 第二屆微軟社群之星 第三屆微軟「最有價值專家」 第五屆微軟「最有價值專家」
Leave a Comment »18 Comments
  • Reply » YVONNE 十二月 21, 2009

    謝謝你..

  • Reply » YVONNE 十二月 21, 2009

    我是2003的說......................

    • Reply » chijanzen 十二月 21, 2009

      你好:
      你在excel檔上做一個範例說明要達到的功能,然後
      上傳到免費空間後在這貼上網址,我可以幫你看看要怎麼寫程式碼

  • Reply » YVONNE 十二月 18, 2009

    嗯..剛有試了.但是這個程式會搜詢整個活頁簿.若我只要搜尋活頁簿的其中幾個連續的試算表內容呢?還有若我想輸入某個字.就會帶出所有有這個關鍵字的內容呢?   剛有去你另一篇RIBBON-EDITBOX的文章看到了
    Sub Callsearch(control As IRibbonControl)
      If ebox_text = "" Then
        MsgBox "您未輸入字串"
      Else
        MsgBox ebox_text
      End If
      '按查詢按鈕後將 editBox01 清空
      '使用InvalidateControl 方法讓使 "editBox01"控制項無效, _
       然後重新整理 UI,進而再回呼editBox01 getText程序
      ebox_text = ""
      theRibbon.InvalidateControl ("editBox01")
    End Sub
     
    把它加到你給我的那個程式碼裡改了一些變數後執行出現"此處需要物件"的錯誤

    以下為我剛剛照你方式貼上的程式碼:
    Sub find_all_sheet()
    Dim sht As Worksheet
    Dim NumberToFind
    Dim rngFind As Range
    NumberToFind = [b12]
    For Each sht In Worksheets
    If sht.Name <> ActiveSheet.Name Then
    Set rngFind = sht.Cells.Find(What:=NumberToFind, _
    After:=sht.Cells(1, 1), _
    LookIn:=xlFormulas, _
    LookAt:=xlWhole, _
    SearchDirection:=xlNext)
    If [b12] = "" Then
        MsgBox "請輸入欲搜尋名稱"
      Else
        MsgBox "請重新輸入"
      End If
       NumberToFind = ""
      THERIBBON.InvalidateControl ("numbertofind")->此處出現需要物件
      returnedVal = NumberToFind
     
    If Not rngFind Is Nothing Then
    Application.Goto rngFind
    Exit For
    End If
    End If
    Next sht
    End Sub
    請老師大發慈悲教教我吧...我是初學者.所以問題粉多..不好意思

    • Reply » chijanzen 十二月 18, 2009

      YVONNE:

      對不起,因為版權的問題我的電腦現在沒裝excel2007,所以無法幫你了

  • Reply » YVONNE 十二月 18, 2009

    老師...那請問我要插入一張圖片,輸入完要搜詢的字串後按那張圖片開始搜尋(意即取代按執行巨集的按鈕的話要怎麼設呢?

    • Reply » chijanzen 十二月 18, 2009

      你好:
      圖片按右鍵=>指定巨集 就可以了
      請參考檔案
      http://www.filedropper.com/9811181

      • Reply » YVONNE 十二月 18, 2009

        嗯..剛有試了.但是這個程式會搜詢整個活頁簿.若我只要搜尋活頁簿的其中幾個連續的試算表內容呢?還有若我想輸入某個字.就會帶出所有有這個關鍵字的內容呢?   剛有去你另一篇RIBBON-EDITBOX的文章看到了
        Sub Callsearch(control As IRibbonControl)
          If ebox_text = "" Then
            MsgBox "您未輸入字串"
          Else
            MsgBox ebox_text
          End If
          '按查詢按鈕後將 editBox01 清空
          '使用InvalidateControl 方法讓使 "editBox01"控制項無效, _
           然後重新整理 UI,進而再回呼editBox01 getText程序
          ebox_text = ""
          theRibbon.InvalidateControl ("editBox01")
        End Sub
         
        把它加到你給我的那個程式碼裡改了一些變數後執行出現"此處需要物件"的錯誤

        • YVONNE 十二月 18, 2009

          THERIBBON.InvalidateControl ("numbertofind")
          這一行出現此處需要物件

  • Reply » YVONNE 十二月 18, 2009

    謝謝老師哦...太感謝你了....

  • Reply » YVONNE 十二月 18, 2009

    我想要在EXCEL的儲存格裡做搜尋的動作函數要怎麼設呢?
    例如在活頁簿的sheet1的A1裡打上某串數值或文字就會自動搜尋整本活頁簿然後自動跳到搜尋到有那串數值或文字的sheet x ,我不想要用工具例的搜尋工具,想要直接設在某個儲存格..有辦法用嗎?可以教教我嗎?感激不盡....

  • Reply » YVONNE 十二月 15, 2009

    我想要在EXCEL的儲存格裡做搜尋的動作函數要怎麼設呢?
    例如在活頁簿的sheet1的A1裡打上某串數值或文字就會自動搜尋整本活頁簿然後自動跳到搜尋到有那串數值或文字的sheet x ,我不想要用工具例的搜尋工具,想要直接設在某個儲存格..有辦法用嗎?可以教教我嗎?感激不盡....

    2009-12-10 18:03:30 補充
    我的意思是 要把EXCEL工具例的尋找取代的工具用公式表現在儲存格裡

    • Reply » chijanzen 十二月 15, 2009

      你好:
      假設要搜尋A1儲存格,搜尋到關鍵字後自動跳到該儲存格,可以使用以下程式碼:

      Sub find_all_sheet()
      Dim sht As Worksheet
      Dim NumberToFind
      Dim rngFind As Range
      NumberToFind = [A1]
      For Each sht In Worksheets
      If sht.Name <> ActiveSheet.Name Then
      Set rngFind = sht.Cells.Find(What:=NumberToFind, _
      After:=sht.Cells(1, 1), _
      LookIn:=xlFormulas, _
      LookAt:=xlWhole, _
      SearchDirection:=xlNext)
      If Not rngFind Is Nothing Then
      Application.Goto rngFind
      Exit For
      End If
      End If
      Next sht
      End Sub

       

    • Reply » chijanzen 十二月 18, 2009

      TEST

Get a GravatarLeave a Reply

Name: « Required

Email Address: « Required

Website URL: « Optional

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

About me
chijanzen 分享個人Excel VBA 學習經驗,架站心得, 日常生活記事等...

Add to Google

分類
Translator
Chinese (Simplified) flagItalian flagKorean flagEnglish flagGerman flag
French flagJapanese flagRussian flagBulgarian flagFinnish flag
相簿