- ホーム
- ribbon
- module
リボンから呼び出す・リボンを制御するVBAコード
2.カスタマイズ用XMLに対応するコード。標準モジュールに記述
出来てみるとなんて事はないのですが、ToggleButtonのCaptionをボタンの状態に応じて変更するのはWebでもみかけません。
Option Explicit
'http://msdn.microsoft.com/ja-jp/library/aa722523.aspx
'http://homepage2.nifty.com/suyamsoft/Ribbon/Excel2010/ContextMenu/index.html
Private rbRibbon As IRibbonUI ' リボン
Private rbButton_Visible As Boolean ' ボタンの表示/非表示
Private rbButton_Enabled As Boolean ' ボタンの有効/無効
Private toggleFlag As Boolean 'トグルボタンのON/OFF
Sub OnLoad(ribbon As IRibbonUI) ' リボンの初期処理 XML側にonLoadの記述要
Set rbRibbon = ribbon ' リボンの表示を更新できるようにするためにリボンをセットする
rbButton_Visible = True ' ボタンを表示する
rbButton_Enabled = True ' ボタンを有効にする
rbRibbon.Invalidate ' リボンの表示を更新する
End Sub
'ファイル読み込み後、リボンのタブを切り替えた初回のみ出る
Sub ToggleButton1_getPressed(control As IRibbonControl, ByRef returnValue)
'初期値を設定
returnValue = toggleFlag
End Sub
Sub ToggleButton1_getLabel(control As IRibbonControl, ByRef label)
'動的なテキスト設定、Invaridateでトグルボタンの状態も元に戻るのでボタン状態初期値も変更要
If toggleFlag Then
label = "ON"
Else
label = "OFF"
End If
End Sub
'ToggleButton onAction
'再利用というのと引数が異なる。再利用版は引数は省略できないというエラーが出るので、無印版を使用
Sub ToggleButton1_click(control As IRibbonControl, pressed As Boolean)
If pressed = True Then
toggleFlag = True
Else
toggleFlag = False
End If
'フォームの再描画の様なもの。これを実行するとトグルボタンの状態も元に戻る
rbRibbon.InvalidateControl control.id
End Sub
Sub CheckBox1_click(control As IRibbonControl, pressed As Boolean)
MsgBox control.id & "のチェックは" & pressed & "です"
End Sub
'初期値設定用
Sub EditBox1_getText(control As IRibbonControl, ByRef text)
text = "initial text"
End Sub
Sub EditBox1_change(control As IRibbonControl, text As String)
MsgBox "EditBoxの内容は " & text & " です"
End Sub
Sub Combo1_change(control As IRibbonControl, text As String)
MsgBox control.id & "の内容は " & text & " です"
End Sub
Sub Launcher1_click(ByVal control As IRibbonControl)
UserForm1.Show
End Sub
Sub Button1_click(ByVal control As IRibbonControl)
MsgBox "MyButtonMacro"
End Sub
Sub Button2_click(ByVal control As IRibbonControl)
MsgBox "MyOtherButtonMacro"
End Sub
'以降はコンテキストメニュー用
Sub GetVisible(control As IRibbonControl, ByRef returnedVal) ' ボタンの表示/非表示の設定
returnedVal = rbButton_Visible
End Sub
Sub GetEnabled(control As IRibbonControl, ByRef returnedVal) ' ボタンの有効/無効の設定
returnedVal = rbButton_Enabled
End Sub
Sub CheckBox_GetPressed(control As IRibbonControl, ByRef returnedVal) ' チェックボックスのチェックのオン/オフの設定
Select Case control.id
Case "VisibleCheckBox"
returnedVal = rbButton_Visible
Case "EnableCheckBox"
returnedVal = rbButton_Enabled
End Select
End Sub
Sub CheckBox_Click(control As IRibbonControl, pressed As Boolean) ' チェックボックスのクリック処理
Select Case control.id
Case "VisibleCheckBox"
rbButton_Visible = pressed ' ボタンの表示/非表示
Case "EnableCheckBox"
rbButton_Enabled = pressed ' ボタンの有効/無効
End Select
rbRibbon.Invalidate ' リボンの表示を更新する
End Sub
'複数のコントロールのボタンクリック処理を一つのプロシージャで分岐処理させている
Sub Button_Click(control As IRibbonControl) ' ボタンのクリック処理
Select Case control.id
Case "DateButton"
ActiveWindow.RangeSelection.Value = Date ' 選択したすべてのセルに日付を代入
Case "TimeButton"
ActiveWindow.RangeSelection.Value = Time ' 選択したすべてのセルに時間を代入
Case "ColumnCountButton"
MsgBox Prompt:="選択した列数:" & Selection.Columns.Count, Buttons:=vbInformation, Title:="選択した列数" ' 非連続で選択した場合はただしくありません!
Case "RowCountButton"
MsgBox Prompt:="選択した行数:" & Selection.Rows.Count, Buttons:=vbInformation, Title:="選択した行数" ' 非連続で選択した場合はただしくありません!
Case Else
MsgBox Prompt:=control.id, Buttons:=vbInformation, Title:="Button Clickd"
End Select
End Sub
Sub Gallery_OnClick(control As IRibbonControl, id As String, index As Integer) ' ギャラリーのアイテムのクリック処理
MsgBox Prompt:=Mid(id, 1, Len(id) - Len("Item")), Buttons:=vbInformation, Title:="Gallery Click"
End Sub