【Excel/VBA】Excelの表に合わせたボタンを作成する
Excelで表を作成するとき、ある行のデータの詳細を表示したり、書類に展開するなどの動作を行うためのボタンが欲しい場面がありますよね。
しかし、ボタンを表に追加しようとすると、位置やサイズを合わせる必要があったり、表のサイズを変えるときに余計な労力がかかってしまいます。
そこで、簡単に表に合わせたボタンを作ることができる方法を紹介します。
Excelでボタンを作成する方法
Excelでボタンを作成する主な方法として、以下のものがあります。
・フォームコントロールのボタンを利用する
・図形にクリックイベントを設定する
この方法で作成したボタンを表に追加しようとしたときに、2つの問題が発生します。
1つ目は、ボタンとセルの位置を手動で合わせる必要があるというものです。
これにより、想定していた行と異なる行を参照するなどの不具合の原因となってしまいます。
2つ目は、行を複製したとき、ボタンが複製されない場合があるというものです。
これにより、増やした行の分ボタンを手動で追加する必要があり、余計な手間がかかってしまいます。
これらの問題により、フォームコントロールや図形でのボタンは、表に合わせて配置するような使い方には向いていないといえます。
今回は、このようなときに簡単かつ確実に実装できる表に合わせたボタンの作り方を紹介します。
表に合わせたボタンを作成する方法
その方法とは、ハイパーリンクとセル書式を利用し、セル自体をボタンにするというものです。
ハイパーリンクを設定
ハイパーリンクを設定します。
アクションとして、別シートへのジャンプを設定します。
ジャンプ先のシートを非表示にします。
これにより、クリックしても動作しないハイパーリンクを設定することができます。
セル書式を設定
ここでは、フォームコントロールのボタンに合わせた書式設定を紹介します。
フォントを下線無し、文字色を黒、セル色を薄いグレーに設定します。
セルの書式設定から罫線を設定します。
上と左に白色、右と下に濃いグレーの太い罫線を設定します。
そうすると、ボタンのような見た目をしたセルを作成することができます。
ボタンクリック時の動作を設定
ボタンをクリックしたときの動作を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サポート:同じ文書内の場所にジャンプするハイパーリンクを追加する