前ページの「ボタンが3つ」のサンプルにComboBoxとPopUpを追加したサンプルです。(一部表示です)
前ページのソースコードサンプルの⑦の手前に以下の主要部分が追加されます。
'***************************************************************************************************
' ■■■ 起動・終了 ■■■
'***************************************************************************************************
'* 処理名 :Auto_Open
'* 機能 :立ち上げ時自動実行処理
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2019年12月03日
'* 作成者 :井上 治
'* 更新日 :2019年12月03日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Auto_Open()
'-----------------------------------------------------------------------------------------------
Dim objBar As CommandBar ' CommandBar
Dim objCont As CommandBarControl ' CommandBarControl
Dim objCombo As CommandBarComboBox ' CommandBarComboBox
Dim objPopUp As CommandBarPopup ' CommandBarPopup
Dim intIx As Integer ' テーブルINDEX
Dim intIxT As Integer ' テーブルINDEX(当月)
Dim intY As Integer ' 年
Dim intM As Integer ' 月
Dim blnTrue As Boolean ' 境界判定
Dim tblYM(11) As String ' 年月テーブル
・
・
・
' 年月初期値
intY = Year(Date)
intM = 4
' 1~3月は年を減算
If Month(Date) < 4 Then intY = intY - 1
' 年月テーブル作成(4月から翌年3月まで)
For intIx = 0 To 11
tblYM(intIx) = CStr(intY) & "年" & Format(intM, "00") & "月"
' 当月か
If intY = Year(Date) And intM = Month(Date) Then intIxT = intIx
' 月を加算
intM = intM + 1
' 月あふれ時は年を加算し、月は1に戻す
If intM > 12 Then
intY = intY + 1
intM = 1
End If
Next intIx
・
・
・
'-----------------------------------------------------------------------------------------------
' 年月ComboBox
Set objCont = objBar.Controls.Add(Type:=msoControlComboBox) ' ①
objCont.BeginGroup = True
Set objCombo = objCont
With objCombo ' ②
.Style = msoComboLabel
.Width = 120 ' ←この記述は効果がない!?
.Caption = "年月"
For intIx = 0 To 11
.AddItem tblYM(intIx)
Next intIx
.ListIndex = intIxT
.OnAction = "CBO_Click"
End With
'-----------------------------------------------------------------------------------------------
' PopUp
Set objCont = objBar.Controls.Add(Type:=msoControlPopup) ' ③
objCont.BeginGroup = True
Set objPopUp = objCont
objPopUp.Caption = "サブメニュー"
' 1番目はボタンの境界をなしにする
blnTrue = False
' ボタンを3つ追加する
For intIx = 0 To 2 ' ④
' まずボタンを指定してコントロールを追加
Set objCont = objPopUp.Controls.Add(Type:=msoControlButton) ' ⑤
' ボタンの境界を設定
objCont.BeginGroup = blnTrue
' CommandBarButtonオブジェクトを取得
Set objBtn = objCont
objBtn.Style = msoButtonCaption ' ボタン名を表示
objBtn.Caption = vntCaption2(intIx) ' 表示名を設定
objBtn.TooltipText = vntTipText(intIx) ' マウスを当てた時のツールチップテキスト
objBtn.OnAction = vntOnAction(intIx) ' 動作マクロを設定
' 2番目以降はボタンの境界を設定
blnTrue = True
Next intIx
・
・
・
End Sub
'***************************************************************************************************
'* 処理名 :BTN_TOUROKU
'* 機能 :「登録」ボタンがクリックされた時の処理
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2019年12月03日
'* 作成者 :井上 治
'* 更新日 :2019年12月03日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub BTN_TOUROKU()
'-----------------------------------------------------------------------------------------------
MsgBox "「登録」が押されました"
End Sub
'***************************************************************************************************
'* 処理名 :BTN_KOUSHIN
'* 機能 :「更新」ボタンがクリックされた時の処理
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2019年12月03日
'* 作成者 :井上 治
'* 更新日 :2019年12月03日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub BTN_KOUSHIN()
'-----------------------------------------------------------------------------------------------
MsgBox "「更新」が押されました"
End Sub
'***************************************************************************************************
'* 処理名 :BTN_SAKUJO
'* 機能 :「削除」ボタンがクリックされた時の処理
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2019年12月03日
'* 作成者 :井上 治
'* 更新日 :2019年12月03日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub BTN_SAKUJO()
'-----------------------------------------------------------------------------------------------
MsgBox "「削除」が押されました"
End Sub
'***************************************************************************************************
'* 処理名 :CBO_Click
'* 機能 :ComboBoxがクリックされた時の処理
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2019年12月03日
'* 作成者 :井上 治
'* 更新日 :2019年12月03日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub CBO_Click()
'-----------------------------------------------------------------------------------------------
Dim xlAPP As Application ' Excel.Application
Dim objBar As CommandBar ' CommandBar
Dim objCont As CommandBarControl ' CommandBarControl
Dim objCombo As CommandBarComboBox ' CommandBarComboBox
Set xlAPP = Application
Set objBar = xlAPP.CommandBars(g_cnsTitle)
Set objCombo = objBar.Controls(4)
MsgBox "「コンボ」が選択されました(" & objCombo.Text & ")"
End Sub