【Excel/VBA】Excelの表に合わせたボタンを作成する

Excelで表を作成するとき、ある行のデータの詳細を表示したり、書類に展開するなどの動作を行うためのボタンが欲しい場面がありますよね。

しかし、ボタンを表に追加しようとすると、位置やサイズを合わせる必要があったり、表のサイズを変えるときに余計な労力がかかってしまいます。

そこで、簡単に表に合わせたボタンを作ることができる方法を紹介します。

Excelでボタンを作成する方法

Excelでボタンを作成する主な方法として、以下のものがあります。

・フォームコントロールのボタンを利用する
・図形にクリックイベントを設定する

左がフォームコントロールで作成したボタン、右が図形で作成したボタンです。

この方法で作成したボタンを表に追加しようとしたときに、2つの問題が発生します

1つ目は、ボタンとセルの位置を手動で合わせる必要があるというものです。

この2つのボタンは同じ高さのように見えますが、わずか1ピクセルの差によりTopLeftCell.Rowの値が異なります。正確に判別するためにはボタン毎にTopLeftCell.Addressの値を確認しなければなりません

これにより、想定していた行と異なる行を参照するなどの不具合の原因となってしまいます

2つ目は、行を複製したとき、ボタンが複製されない場合があるというものです。

ボタンを含んだ行をコピーし、複数行にペーストした結果、ボタンが最初の1つしか複製されていません

これにより、増やした行の分ボタンを手動で追加する必要があり、余計な手間がかかってしまいます。

これらの問題により、フォームコントロールや図形でのボタンは、表に合わせて配置するような使い方には向いていないといえます

今回は、このようなときに簡単かつ確実に実装できる表に合わせたボタンの作り方を紹介します。

表に合わせたボタンを作成する方法

その方法とは、ハイパーリンクとセル書式を利用し、セル自体をボタンにするというものです。

ハイパーリンクを設定

ハイパーリンクを設定します。

アクションとして、別シートへのジャンプを設定します。

ジャンプ先のシートを非表示にします。

これにより、クリックしても動作しないハイパーリンクを設定することができます。

セル書式を設定

ここでは、フォームコントロールのボタンに合わせた書式設定を紹介します。

フォントを下線無し、文字色を黒、セル色を薄いグレーに設定します。

セルの書式設定から罫線を設定します。

上と左に白色、右と下に濃いグレーの太い罫線を設定します。

そうすると、ボタンのような見た目をしたセルを作成することができます

ボタンクリック時の動作を設定

ボタンをクリックしたときの動作をVBAで設定します。

ハイパーリンクのクリックイベントはWorksheet_FollowHyperlinkで受け取ることができます。
クリックしたハイパーリンクを含むセルがActiveCellになるため、それを利用することでどのボタンがクリックされたかを判別することができます。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    MsgBox ActiveCell.Address
End Sub

このままではボタンのセルをダブルクリックしたときに編集モードになってしまうため、それを防ぐための設定をします。

セルのダブルクリックイベントをWorksheet_BeforeDoubleClickで受け取ります。セルにハイパーリンクが含まれている場合は「cancel=true」を実行します。
これによりダブルクリックしても編集モードになりません

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Hyperlinks.Count > 0 Then
        Cancel = True
    End If
End Sub

利点

このボタンの利点としては、行、列を複製したとき、ボタンもすべて複製されます
そのため、行を増やす作業、処理が簡単にできるようになります

ボタンを含んだ行をコピーし、複数行にペーストした結果、全行にボタンが複製されています

また、ボタンの位置をセル単位で取得することができます
そのため、ボタンの行、列の値を利用するイベントを簡単かつ確実に実行することができます

フォームコントロールと異なりセルを跨ぐように配置されないため、確実にボタンの位置を取得することができます

まとめ

Excelで作成した表に合わせたボタンを作成する方法を紹介しました。

この方法を使えば直感的、複雑な帳票が簡単に作成できますので、ぜひ参考にしてみてください。

参考ページ

Microsoftサポート:同じ文書内の場所にジャンプするハイパーリンクを追加する

関連記事(Excelのお役立ち情報)

EXCELで面倒な操作の簡略化の紹介(ホットキー、マウス+キーボード)
Excel 業務をもっとカンタンに