ユーザーフォームとメニューの操作
・ユーザーフォームの操作
・コントロールの操作
・メニューとツールバーの操作
試験としては、範囲が広すぎて問題が作りづらいところだと思います。
しかし実務としては、必ずユーザーフォームの必要性は出てきますので、一通りは学習しておくことをお勧めします。
【ここでのポイント】
ユーザーフォーム・コントロールのそれぞれのプロパティ・イベントを知らなければVBAが書けないからです。
公式テキストでも、最も多くのページを割いています。
実務では、VBEの画面にプロパィ一覧は表示されますし、入力候補も表示されますので、
例えば、スペルまでは覚えておく必要がありません。
ところが、MOS試験ではそう言う訳にはいかない為、ある程度は暗記しておく必要があります。
試験に出されるプロパティ・イベントは限られているので、
公式テキストと本ページに書いてあるプロパティ・イベントを優先して覚えておけば良いでしょう。
ユーザーフォームの操作、コントロールの操作
画面サンプルを載せて自習できるようにしていますので、読みながら実際にやってみて下さい。
Unload Me
QueryCloseイベント
コントロール
Caption | Value | Text | ListIndex | ListCount | List | |
コマンドボタン | ○ | |||||
ラベル | ○ | |||||
テキストボックス | ○ | ○ | ||||
コンボボックス | ○ | ○ | ○ | ○ | ○ | |
リストボックス | ○ | ○ | ○ | ○ | ○ | |
チェックボックス | ○ | ○ | ||||
オプションボタン | ○ | ○ |
ValueとTextは同じ値になります。
特段の使い分けはありません。
0から始まります。
未選択時は-1になります。
コンボボックスとリストボックスになるでしょう。
この二つは、重点的に覚えて下さい。
代表的なメソッド
AddItemメソッド
代表的なイベント
これは、全てのコントロールにありますが、
コマンドボタンでの使用がほとんどです。
チェックボックスとオプションボタンで使いますが、試験には出る可能性は低いでしょう。
ユーザーフォーム入門
上記のユーザーフォーム入門では、
最初の方は、初めてユーザーフォームを使う入門者を想定して、かなり詳しく説明しています。
後半になると、かなりの上級者向けの内容になっていますが、
完全に理解する必要はないので、最後まで読み切るようにして下さい。
メニューとツールバーの操作
この項目名についてはは、公式テキストにも書かれていますが2003以前の名称になっています。
セルを右クリックした時のコンテキストメニュー(ショートカットメニュー)について記載します。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim cmdBra1 As CommandBarControl
Dim cmdBra2 As CommandBarControl
'標準状態にリセット
CommandBars("Cell").Reset
'全てのメニューを一旦削除
For Each cmdBra1 In CommandBars("Cell").Controls
cmdBra1.Visible = False
Next
'以下で、新規のメニューを追加
Set cmdBra1 = CommandBars("Cell").Controls.Add()
With cmdBra1
.Caption = "AA"
.FaceId = 2
.OnAction = "AA"
End With
Set cmdBra1 = CommandBars("Cell").Controls.Add(Type:=msoControlPopup)
With cmdBra1
.Caption = "BB"
.BeginGroup = True
End With
Set cmdBra2 = cmdBra1.Controls.Add()
With cmdBra2
.Caption = "BB1"
.FaceId = 3
.OnAction = "BB1"
End With
Set cmdBra2 = cmdBra1.Controls.Add()
With cmdBra2
.Caption = "BB2"
.FaceId = 4
.Tag = "説明"
.OnAction = "'BB2(""" & .Tag & """)'"
End With
CommandBars("Cell").ShowPopup
CommandBars("Cell").Reset
Cancel = True
End Sub
覚えるべきプロパティ・メソッドを太字にしています。
これは、OnActionで起動されるマクロに引数を渡しています。
ただし、記述が難しいので試験には出ません。
標準モジュールに以下を追加
Sub AA()
ActiveCell.Value = "AA"
End Sub
Sub BB1()
ActiveCell.Value = "BB1"
End Sub
Sub BB2(ByVal argTag)
ActiveCell.Value = argTag
End Sub
OnActionで呼ぶプロシージャーは、必ず標準モジュールに作成します。
右クリックしてみましょう
CommandBarオブジェクト
CommandBarオブジェクトは、CommandBarsコレクションのメンバーです。
CommandBarsコレクションの中から、"Cell"という名前のCommandBarオブジェクトを取得しています。
これが、右クリックで表示されるメニューになります。
"Cell"以外も沢山ありますが、試験には出ないはずです。
以下は、全てのCommandBarsの名前をイミィディエイトに出力しています。
Sub sample()
Dim obj
For Each obj In CommandBars
Debug.Print obj.Name
Next
End Sub
この右クリックメニューな中に、
Control(一つ一つのメニュー)の集まりとしてのControlsコレクションがあります。
以下は、全てのControlsの見出しをイミィディエイトに出力しています。
Sub sample()
Dim obj
For Each obj In CommandBars("Cell").Controls
Debug.Print obj.Caption
Next
End Sub
メニューを追加する時は、Controls.Addメソッドを使います。
メニューを削除する時は、Controls(インデックスまたは名前を指定).Deleteメソッドを使います。
コマンドバー.Controls.Add()
名前 | 説明 |
Type | 指定したコマンド バーに追加するコントロールの種類を指定します。 使用できる定数は、MsoControl クラスの msoControlButton、msoControlEdit、msoControlDropdown、msoControlComboBox、msoControlPopup のいずれかです。 |
Id | 組み込みのコントロールを表す整数を指定します。 この引数を1に設定するか省略すると、指定した種類の空白のカスタム コントロールがコマンド バーに追加されます。 |
Parameter | 組み込みのコントロールの場合、この引数はコンテナー アプリケーションでコマンドを実行するときに使用されます。 カスタム コントロールの場合、この引数を使用して、Visual Basic のプロシージャに情報を渡したり、Tag プロパティの 2 番目の値のようなコントロールの情報を格納することができます。 |
Before | コマンド バーにおける新しいコントロールの位置を表す数字を指定します。 新しいコントロールは、指定した位置にあるコントロールの直前に挿入されます。 この引数を省略すると、コントロールは指定したコマンド バーの末尾に追加されます。 |
Temporary | True を指定すると、新しいコントロールが一時的なものになります。 このコントロールは、コンテナー アプリケーションの終了と同時に自動的に削除されます。 この引数を省略すると、既定値の False になります。 |
上記サンプルでは、"BB"は親メニューになりますので、
Type:=msoControlPopup
これを指定しています。
Type:=msoControlButton
これが規定となります。
コントロールのプロパティについて
OnAction
FaceId
この番号と実際のアイコンについては、「エクセルのアイコン取得」を参照して下さい。
State
このプロパティでチェツクを付ける方法が紹介されています。
実務で使う場面が想像出来ないのですが、一応おぼえておきましょう。
Tag
【業務改善の実務】
ただし、
むやみにユーザーフォームを使えば良いという事も無く、
シートの形式を工夫すれば済む場合も多々ありますので、良く考えて設計するべきです。
マクロがとても複雑になり、後々のメンテに苦労することになります。
VBAには、適切なコメントを書き込んでおくとか、
関連するイベントは、プロシージャ内の近くにまとめておく等の工夫は必ずしておくべきです。
ボタンが配置出来ない時や、機能が多様になっている場合の選択方法としては有効な手段です。
VBAコードは定型的なものになるので、コピペで使い回せるようにしておきましょう。
【本サイト内の関連ページ】
右クリックメニューの変更(CommandBars)
VBAエキスパート公式テキスト
こちらは必須として購入した方が良いでしょう。
ちょっと高いなーとは思いますが、
書籍を購入することで、学習用データが提供されています。
・サンプルブック
・VBAエキスパート模擬問題
これらが使えるようになります。
このシリーズでは、テキストを読みながら学習していることを前提とします。
同じテーマ「VBAエキスパート対策」の記事
プロシージャ
イベント
ステートメント(スタンダード)
関数
エラーへの対処
APIとOLEオートメーション
変数と配列
レジストリの操作
ファイルの操作
ユーザーフォームとメニューの操作
VBAスタンダード試験対策まとめ
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
- ホーム
- マクロVBA入門編
- VBAエキスパート対策
- ユーザーフォームとメニューの操作
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。