HOME > Ribbon > サンプル > RadioButton3

RadioButton3


【ファイル名】RadioButton3.xlsm
【バージョン】Ver 1.0.0
【作成日】2014年01月04日
【ダウンロード】RadioButton3.lzh
【説明】buttonの画像をフォームのImageコントロールのPictureで動的に変更して、ラジオボタン風に使います。

選択したボタンの書式で現在の時刻を表示します。



Office 2007のリボンのコントロールにラジオボタンはありません。(Office 2010からファイルメニューにradioGroupradioButtonが追加)
buttonの画像をgetImageコールバック関数で、フォームのImageコントロールのPictureで動的に変更します。
複数の項目から選択するにはdropDowncomboBoxgalleryを使うと良いでしょう。

checkButtonをラジオボタン風に使うサンプルはRadioButtonを参照してください。
buttonの組み込みの画像を変更するサンプルのRadioButton2も参照してください。
buttonの画像を外部ファイルで変更するサンプルのRadioButton4も参照してください。
Excel 2010のファイルメニューのラジオボタンのサンプルはRadioButtonも参照してください。

フォームのImageコントロールに画像を指定します。
フォームのImageコントロール

customUI.xml
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad">
  <ribbon startFromScratch="false">
    <tabs>
      <tab id="SampleTab" label="Sample" keytip="AM" insertBeforeMso="TabInsert">
        <group id="TimeGroup1" label="Time" keytip="T">
          <box id="TimeButtonBox" boxStyle="vertical">
            <button id="TimeFormat1" label="HH:MM:SS" keytip="1"  getImage="Button_GetImage"  onAction="TimeFormatButton_Click" />
            <button id="TimeFormat2" label="HH:MM:SS AM/PM" keytip="2"  getImage="Button_GetImage"  onAction="TimeFormatButton_Click" />
            <button id="TimeFormat3" label="HH時MM分SS秒" keytip="3"  getImage="Button_GetImage"  onAction="TimeFormatButton_Click" />
          </box>
          <separator id="separator1"></separator>
          <button id="TimeButton" label="Time" keytip="M" size="large"  imageMso="StartAfterPrevious" onAction="TimeButton_Click" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

VBEModule1
Option Explicit

Private rbRibbon As IRibbonUI ' リボン
Private rbTimeFormat1 As Boolean ' 時間の書式のチェックボタン1
Private rbTimeFormat2 As Boolean ' 時間の書式のチェックボタン2
Private rbTimeFormat3 As Boolean ' 時間の書式のチェックボタン3

Sub OnLoad(ribbon As IRibbonUI) ' リボンの初期処理
'  SendKeys "%am{ENTER}" ' [Sample]タブを選択する
  rbTimeFormat1 = True
  rbTimeFormat2 = False
  rbTimeFormat3 = False
  Set rbRibbon = ribbon ' リボンの表示を更新できるようにするためにリボンをセットする
  rbRibbon.Invalidate ' リボンの描画を更新する
End Sub

Sub TimeFormatButton_Click(control As IRibbonControl) ' TimeFormatButtonのクリック処理
  rbTimeFormat1 = False
  rbTimeFormat2 = False
  rbTimeFormat3 = False

  Select Case control.ID
    Case "TimeFormat1"
      rbTimeFormat1 = True
    Case "TimeFormat2"
      rbTimeFormat2 = True
    Case "TimeFormat3"
      rbTimeFormat3 = True
  End Select
  rbRibbon.Invalidate ' リボンの描画を更新する
End Sub

Sub TimeButton_Click(control As IRibbonControl) ' TimeButtonのクリック処理
  Dim Msg As String

  If rbTimeFormat1 Then
    Msg = Format(Time, "hh:mm:ss")
  ElseIf rbTimeFormat2 Then
    Msg = Format(Time, "hh:mm:ss AMPM")
  ElseIf rbTimeFormat3 Then
    Msg = Format(Time, "h時m分s秒")
  End If
  MsgBox prompt:=Msg, Buttons:=vbInformation, Title:="Date"
End Sub

Sub Button_GetImage(control As IRibbonControl, ByRef image) ' getImageのコールバック関数
  Select Case control.ID
    Case "TimeFormat1"
      If rbTimeFormat1 Then
         Set image = UserForm1.CheckOn.Picture
      Else
         Set image = UserForm1.CheckOff.Picture
      End If
    Case "TimeFormat2"
      If rbTimeFormat2 Then
         Set image = UserForm1.CheckOn.Picture
      Else
         Set image = UserForm1.CheckOff.Picture
      End If
    Case "TimeFormat3"
      If rbTimeFormat3 Then
         Set image = UserForm1.CheckOn.Picture
      Else
         Set image = UserForm1.CheckOff.Picture
      End If
  End Select
End Sub

このページの上