Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » X型のチェックボックスを作成したい−SelectionChange

X型のチェックボックスを作成したい−SelectionChange

対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007

Excelでチェックボックスを使ってデータ入力をできるようにする方法をご紹介してきました。

この方法を知った方から、
「チェックボックスを『レ』ではなく『X』にすることはできないのでしょうか?」
というご質問をいただいたことがあります。

フォームやコントロールツールボックスから作成したチェックボックスは、Onにすると「レ」型のチェックとなりますが、これを「X」になるようにできないのか、というご質問です。

フォームやコントロールツールボックスから作成できるチェックボックスは、「レ」型にしかならないので別の方法を考えるしかありません。

[スポンサードリンク]

以前このサイトでご紹介した、「Excel Hacks―プロが教える究極のテクニック100選」の、Hack86「セルをチェックボックスのように動作させる」で、Marlettフォントを使って、レ型のチェックマークを表示させるコードが紹介されています。

この考え方を利用して、□にX型のチェックマークを表示させる以下のようなコードを書いてみました。

▼セルにX型チェックマークを表示するイベントプロシージャ
※B1・B3・B5セルをクリックするとX型チェックマークのOn/Offが切り替わる例

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

 With Target

  If _
  .Address() = "$B$1" Or _
  .Address() = "$B$3" Or _
  .Address() = "$B$5" _
  Then
   .Font.Name = "Wingdings 2"
   If .Value = ChrW(83) Then
    .Value = ChrW(163)
   Else
    .Value = ChrW(83)
   End If
  End If

 End With

End Sub

「Wingdings 2」フォントには、空の□と、□にXの表示された形状が用意されています。

文字コード(ユニコード)の
「83」が□にXの表示された形状
「163」が□
です。

.Font.Name = "Wingdings 2"
If .Value = ChrW(83) Then
 .Value = ChrW(163)
Else
 .Value = ChrW(83)
End If

の部分で、フォントを「Wingdings 2」にして、
セルの値が「ChrW(83)」なら「ChrW(163)」に
そうでなければ「ChrW(83)」にすることで、
チェックマークのOn/Offを入れ替えています。

If _
.Address() = "$B$1" Or _
.Address() = "$B$3" Or _
.Address() = "$B$5" _
Then

の部分で、どのセルを対象にするかを指定しています。

格好いいコードとは思えませんが、チェックマークを表示させるセルを追加したければ、この箇所に追加してください。

なおこのコードには若干の問題もあります。

Worksheet_SelectionChangeイベントプロシージャを利用しているので、あくまでも選択箇所が変更されたときにだけ有効になるという点です。

つまり上記のコードでは、B1セルがアクティブなときにB3セルをクリックすればB3セルのOn/Offは切り替わりますが、B3セルがアクティブな状態でB3セルをもう一度クリックしたとしてもB3セルのOn/Offは切り替わることはありません。

関連語句
×のチェックマーク, ×型チェック記号, レ点の表示方法, れてん, レテン, レチェック, チェックボタン

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » X型のチェックボックスを作成したい−SelectionChange

「イベントプロシージャ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.