Excel VBA シート上のチェックボックス、オプションボタン
(チェックボックスなどはフォームコントロールとActiveXコントロールがありますが、この記事ではフォームコントロールに話を限らせていただきます。)
お仕事で、Excelの記入フォーマットに書かれた情報をツールに取り込むというのがあり、そのシートにはチェックボックスが2つありました。
あれぇ、どうやってチェックされてるかどうかを調べるんだっけ?とググってみるのですが、ユーザーフォーム上のチェックボックスやオプションボタンの扱い方は出てくるのですが、シート上の物の扱い方は出て来ない。
勘で
Sheet1.check...
と打ってみてもVBEのヒントが出てこない。
Sheet1.CheckBoxes(
(Boxは複数形です。)
まで打つとヒントが出てくる。
では、カッコの中には何を入れれば良いのか。
もちろん、1,2,3と言った番号でも良いのだが、他人が作ったExcel上に貼られたチェックボックス、どれが1なのか2なのかなんてわからない。
でも、チェックボックスを右クリックすると
ここに名前が出ますよね。
注意が必要なのが、これは”チェック 1"(全角"チェック"、半角スペース、半角"1")です。
ぱっと見で半角スペース無しで入れると当然うまく行きません。
あと、チェックボックスが取りうる値ですが、xlOnかxlOffです。
チェックボックス同様、よく使われそうなのがラジオボタン、と言うかフォームコントロールの種類でいうとオプションボタンですね。
これも、
Sheet1.OptionButtons()
という形です。
こちらも取りうる値はxlOnかxlOff
ということで
こういうシートで
こんなコードを動かすと
Check1=ON
Check2=OFF
Option1=OFF
Option2=ON
こんな結果が得られます。
それから、CheckBoxesやOptionButtonsはShapesとしても扱えるので
このようにすれば、すべてのShapesの名前が得られます。
ただし、上記のように右クリックして名前ボックスに出てくるのとは違い
Check Box 1
Check Box 2
Option Button 3
Option Button 4
この様な書式で得られます。
もちろん、この書式でCheckBoxesやOptionButtonsやShapesのカッコの中に入れても使えます。
ただ、これだと、どの名前がどのShapeを表しているのかがわからなくて、色々とOn、Offの状態にしながらこれらのValueを見ながら特定していくことになりますね。
できる大事典 Excel VBA 2019/2016/2013&Microsoft 365対応 できる大事典シリーズ - 国本 温子, 緑川 吉行, できるシリーズ編集部
にほんブログ村
お仕事で、Excelの記入フォーマットに書かれた情報をツールに取り込むというのがあり、そのシートにはチェックボックスが2つありました。
あれぇ、どうやってチェックされてるかどうかを調べるんだっけ?とググってみるのですが、ユーザーフォーム上のチェックボックスやオプションボタンの扱い方は出てくるのですが、シート上の物の扱い方は出て来ない。
勘で
Sheet1.check...
と打ってみてもVBEのヒントが出てこない。
Sheet1.CheckBoxes(
(Boxは複数形です。)
まで打つとヒントが出てくる。
では、カッコの中には何を入れれば良いのか。
もちろん、1,2,3と言った番号でも良いのだが、他人が作ったExcel上に貼られたチェックボックス、どれが1なのか2なのかなんてわからない。
でも、チェックボックスを右クリックすると
ここに名前が出ますよね。
注意が必要なのが、これは”チェック 1"(全角"チェック"、半角スペース、半角"1")です。
ぱっと見で半角スペース無しで入れると当然うまく行きません。
あと、チェックボックスが取りうる値ですが、xlOnかxlOffです。
チェックボックス同様、よく使われそうなのがラジオボタン、と言うかフォームコントロールの種類でいうとオプションボタンですね。
これも、
Sheet1.OptionButtons()
という形です。
こちらも取りうる値はxlOnかxlOff
ということで
こういうシートで
Sub checkCheckBox()
Dim Check1 As String
Dim Check2 As String
Dim Option1 As String
Dim Option2 As String
Check1 = onOff(Sheet1.CheckBoxes("チェック 1").Value)
Check2 = onOff(Sheet1.CheckBoxes("チェック 2").Value)
Option1 = onOff(Sheet1.OptionButtons("オプション 3").Value)
Option2 = onOff(Sheet1.OptionButtons("オプション 4").Value)
Debug.Print "Check1="; Check1
Debug.Print "Check2="; Check2
Debug.Print "Option1="; Option1
Debug.Print "Option2="; Option2
End Sub
Function onOff(ByVal Value As Long) As String
Select Case Value
Case xlOn
onOff = "ON"
Case xlOff
onOff = "OFF"
End Select
End Function
こんなコードを動かすと
Check1=ON
Check2=OFF
Option1=OFF
Option2=ON
こんな結果が得られます。
それから、CheckBoxesやOptionButtonsはShapesとしても扱えるので
Sub allShapes()
Dim Shp As Shape
For Each Shp In Sheet1.Shapes
Debug.Print Shp.Name
Next Shp
End Sub
このようにすれば、すべてのShapesの名前が得られます。
ただし、上記のように右クリックして名前ボックスに出てくるのとは違い
Check Box 1
Check Box 2
Option Button 3
Option Button 4
この様な書式で得られます。
もちろん、この書式でCheckBoxesやOptionButtonsやShapesのカッコの中に入れても使えます。
ただ、これだと、どの名前がどのShapeを表しているのかがわからなくて、色々とOn、Offの状態にしながらこれらのValueを見ながら特定していくことになりますね。
できる大事典 Excel VBA 2019/2016/2013&Microsoft 365対応 できる大事典シリーズ - 国本 温子, 緑川 吉行, できるシリーズ編集部
にほんブログ村
この記事へのコメント