ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
手順 1: 開発タブを表示
標準では「開発」タブは非表示なので、まず表示します:
- ファイル → オプション → リボンのユーザー設定
- 右側の「メイン タブ」リストで 「開発」 にチェック
- OK → リボンに「開発」タブが追加される
手順 2: ボタンを配置してマクロを紐づけ(フォームコントロール)
- 開発タブ → 挿入 → フォームコントロール の左上「ボタン」をクリック
- シート上でドラッグしてボタンを配置
- 離した瞬間「マクロの登録」ダイアログが表示される
- 登録済マクロから選択 or 「新規作成」で雛形生成
- OK でボタンとマクロが紐づく
- テキストを編集(右クリック → テキストの編集)
マクロ本体の例
' 標準モジュール (Module1) に書く
Sub ClearTable()
Range("A2:E100").ClearContents
MsgBox "クリアしました", vbInformation
End Sub
Sub SaveAndClose()
ThisWorkbook.Save
Application.Quit
End Sub
' 引数つきマクロを紐づけたい場合
Sub ShowMessage(msg As String)
MsgBox msg
End Sub
' → ボタンの OnAction には `'ShowMessage "hello"'` のように指定
後から紐づけを変更する
- 配置済のボタンを右クリック(左クリックではマクロが走るので注意)
- 「マクロの登録」を選択
- 別のマクロ名を選んで OK
右クリックできない場合は Ctrl + 左クリック で選択モードに。
VBA からプログラム的に紐づける
Sub SetupButton()
' フォームコントロールのボタンを追加
Dim btn As Button
Set btn = ActiveSheet.Buttons.Add( _
Left:=100, Top:=50, Width:=120, Height:=30)
btn.Name = "ClearBtn"
btn.Caption = "クリア実行"
btn.OnAction = "ClearTable" ' ← ここで紐づけ
End Sub
' 既存ボタンの紐づけを後から変更
Sub ChangeButtonAction()
ActiveSheet.Buttons("ClearBtn").OnAction = "SaveAndClose"
End Sub
' 全ボタンの紐づけを一覧表示
Sub ListButtonActions()
Dim btn As Button
For Each btn In ActiveSheet.Buttons
Debug.Print btn.Name, btn.Caption, btn.OnAction
Next btn
End Sub
シェイプ(図形)にマクロを割り当てる
四角や矢印などの図形にもマクロを紐づけて「カラフルなボタン」を作れます:
- 挿入 → 図形 → 任意の図形を配置
- 図形を右クリック → 「マクロの登録」
- マクロを選択 → OK
' VBA で図形にマクロ割当
Sub SetupShapeButton()
Dim s As Shape
Set s = ActiveSheet.Shapes.AddShape( _
Type:=msoShapeRoundedRectangle, _
Left:=100, Top:=100, Width:=150, Height:=50)
s.Name = "RunBtn"
s.TextFrame.Characters.Text = "実行"
s.Fill.ForeColor.RGB = RGB(0, 153, 76)
s.TextFrame.Characters.Font.Color = RGB(255, 255, 255)
s.OnAction = "ClearTable" ' ← 紐づけ
End Sub
ActiveX ボタン(CommandButton)
ActiveX は OnAction ではなくClick イベントに直接コードを書きます:
- 開発タブ → 挿入 → ActiveX コントロール → コマンドボタン
- 配置後、デザインモードのままダブルクリックで VBE が開く
CommandButton1_Clickプロシージャに処理を書く- デザインモードを OFF にすると動作する
' Sheet1 のコード(オブジェクトモジュール)
Private Sub CommandButton1_Click()
Call ClearTable
End Sub
Private Sub CommandButton2_Click()
If MsgBox("保存しますか?", vbYesNo + vbQuestion) = vbYes Then
ThisWorkbook.Save
End If
End Sub
フォームコントロール vs ActiveX
| 項目 | フォームコントロール | ActiveX |
|---|---|---|
| 紐づけ方法 | OnAction で標準モジュールのマクロ | Click イベント(シートモジュール) |
| デザイン自由度 | 低(ボタンらしい外観のみ) | 高(フォント・色・画像) |
| マクロ共有 | 複数ボタンで同一マクロを使い回せる | 1 ボタンに 1 イベント |
| 互換性 | Mac でも動く | Mac で動かない、64bit で不具合あり |
| 推奨 | シンプル業務はこちら | 高度な UI が必要なときのみ |
よくあるトラブル
| 症状 | 原因 | 対処 |
|---|---|---|
| ボタンを押しても何も起きない | マクロ未登録 / マクロセキュリティで無効 | 右クリック → マクロの登録を確認 / マクロを有効化 |
| ボタンの紐づけが消える | ブックを別 PC で開いた / マクロ削除済 | OnAction を再設定 |
| ActiveX ボタンが押せない | デザインモードが ON | 開発タブ → デザインモード OFF |
| ボタンが選択できない | 普通のクリックではマクロが走る | Ctrl + 左クリック または右クリック |
FAQ
Q: 同じマクロを複数ボタンで使い回したい
A: フォームコントロールが向いています。全ボタンの OnAction に同じマクロ名を指定。
Q: ボタンを押した時に「どのボタン?」を取得したい
A: Application.Caller で押されたボタン名が取得できます。If Application.Caller = "Button 1" Then ...
Q: ボタンだけ印刷したくない
A: ボタン右クリック → コントロールの書式設定 → プロパティタブ → 「オブジェクトを印刷する」のチェックを外す。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- マクロとボタンの紐づけ方法
- 開発タブの表示
- モジュールの名前変更方法
- エラー一覧
- シートのコピー
- デバッグで一行ずつ実行する方法
- 変数宣言時のSETありなしの違い
- if文で複数条件を指定する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?