チェックボックスをマクロで一括作成、一括リンクセルを作成する
動画でExcelVBA チェックボックスをマクロで一括作成、一括リンクセルを作成する
チェックボックスをマクロで一括作成、一括リンクセルを作成する
Excel塾のマクロ講座 動画編 39回「マクロ講座チェックボックスをマクロで一括作成、一括リンクセルを作成する、フォームコントロールのチェックボックスを詳しく解説」です。
チェックボックスはアンケートや集計に便利な機能です。
ただ使うまでの準備が大変です。
そしてチェックを入れるだけでなく、カンタンに集計したりしたいわけですが、それにはリンクセルを設定しなければならないわけです。
しかし、それも結構面倒です。
今回の講義では、チェックボックスを必要な個数カンタンに作れ、リンクセルを設定するマクロを作成します。
マクロ動画 チェックボックスをマクロで一括作成、一括リンクセルを作成する
チェックボックスを作るにはどんなコードを書けばいいか
-
サンプルは国内旅行の持ち物のチェックリストです。
持ち物を忘れないようにバッグに入れたかどうかをチェックする、チェックリストを作成したいと思います。
隣の B 列にチェックボックスを作成していきます。 -
チェックボックスを作成するには、この 開発タブにあるコントロールグループから挿入ボタンを押して 作成することができます。
上はフォームコントロール、 下はアクティブXコントロールというものです。 -
さてはじめに復習を兼ねて、チェックボックスを手動で作成してみましょう。しかしただつくるのではなく、記録のマクロを利用して、どのようなコードが使われるのかを確認します。
-
B2セルにチェックボックスを作成し、C 2セルにはリンクさせました。
-
どんなコードが記録されたか見てみましょう。
ActiveSheet.CheckBoxes.Add
の後ろの数値は、まず、左からの距離、上からの距離そして幅と高さが入っています。
この数値を指定することで好きな位置にチェックボックスを配置することができます。
チェックボックスコードの読み解き
-
そしてチェックボックスに自動的に入れられたテキストを消しました。
Selection.Characters.Text = "" -
Selection.Cut
これは右クリックからの切り取りのことで、チェックボックスを削除しました。 -
再びチェックボックスを作成しています。
この時は Selection.Characters.Text = "check 23と"
に入っている文字列 check 23というのは消さないでおきました。
With Selection 以降は、 チェックボックスを右クリックして設定できる項目、コントロールの祖初期設定のコントロールタブのところです。 -
LinkedCellは必要なので使いましょう。またDisplay3DShadingも残しておきましょう。
すると、不要な部分をのこしたマクロのコードは、このようにシンプルになりました。 -
チェックボックスとリンクしたセルを作成できました。実際には、チェックボックスの位置が悪くて、手動で訂正しています。
チェックボックス作成マクロを作る
-
これで一番問題なのはチェックボックスを設定するときの位置だということがわかったわけですけれども、その位置をどのように決めたら良いかというところが難しい点です。
ActiveSheet.CheckBoxes.Addに必要なのは、位置情報です。
シート上で規則的に並んでいるのはセルですから、 セルの左上の位置や右上の位置を取得することはできます。
そういったセル位置を利用することにしましょう。 -
もともとチェックリストですから、指定したセルに一個ずつチェックボックスを入れていきたいので、
その対象となるセルの上からの距離、そして左からの距離、セルの幅、セルの高さを使います。
cTop = Cells(i, 2).Top cLeft = Cells(i, 2).Left cwidth = Cells(i, 2).Width cheight = Cells(i, 2).Height ActiveSheet.CheckBoxes.Add(cLeft, cTop, cwidth, cheight).Select
-
with 文を使って、選択したチェックボックスに、リンクドセルを隣のセルに対して設定します。
With Selection .LinkedCell = Cells(i, 2).Offset(0, 1).Address End With
-
全体のコードはこのようになります。
サンプルでは2行目から21行目まで B 列に対してチェックボックスを作成し、その隣オフセット01のセルに対してリンクしたセルを設定しています。Sub Makeチェックボックス() Dim cTop As Double, cLeft As Double, cwidth As Double, cheight As Double Dim i As Long For i = 2 To 21 With Cells(i, 2) cTop = Cells(i, 2).Top cLeft = Cells(i, 2).Left cwidth = Cells(i, 2).Width cheight = Cells(i, 2).Height ActiveSheet.CheckBoxes.Add(cLeft, cTop, cwidth, cheight).Select Selection.Characters.Text = "" With Selection .Value = xlOn .LinkedCell = Cells(i, 2).Offset(0, 1).Address End With End With Next i End Sub
-
With Selection に対して、
.Value = xlOn でコードを書いているので、全てのチェックボックスが TRUE になっています。
-
フォームコントロールのチェックボックスのチェックを一括ではずすマクロです。
Sub フォームチェックボックスをチェック解除() ActiveSheet.CheckBoxes.Value = False End Sub
-
フォームコントロールのチェックボックスのチェックを一括で入力するマクロです。
Sub フォームチェックボックス全部チェック() ActiveSheet.CheckBoxes.Value = True End Sub
チェックボックスのチェックをまとめてチェック解除する
作成してあるチェックボックスを一括削除
-
チェックボックスを全部削除して、作り直したいとかいうこともあるかもしれません。
あるいは練習に一括削除したいということもあるかもしれません。
こちらのコードはシート上のチェックボックスをまとめて削除するマクロです。Sub フォームチェックボックス一括削除1() Dim checkbox As checkbox For Each checkbox In ActiveSheet.CheckBoxes checkbox.Delete Next End Sub
Sub フォームチェックボックス全部削除2() ActiveSheet.CheckBoxes.Delete End Sub
-
今までチェックボックスはチェックするのにはとてもいいんだけれども、作成するのが、面倒だということで、なかなか使用に踏み切れなかった方も、 簡単にチェックボックスとリンクしたセルを必要な数をすぐ作れますのでぜひお試しください。