- ベストアンサー
Excel VBAでCheckboxの名前を変数にとって値を調べる方法
- Excel VBAでCheckboxの名前を変数にとって値を調べる方法を紹介します。
- シートに配置された複数のCheckboxの名前とOn,Offの値を調べる方法について説明します。
- 指定した名前のCheckboxの値を取得するためには適切なタイプの変数を使用する必要があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Shape、OleObjectなど知らなくても使える方法は CheckBoxのLinkedCellプロパティを使うことです。 CheckBox1 の LinkedCell を セルF1 CheckBox2 の LinkedCell を セルF2 CheckBox3 の LinkedCell を セルF3 にセットしておくと CheckBoxのOn、OffがF1~3のセルに表示されますのでそれを使えば簡単ですね '------------------------------------------- Sub test222() Dim N As Integer Dim myValue(3) For N = 1 To 3 myValue(N) = Cells(N, "F").Value Next N End Sub '------------------------------------------ それからObjectの意味が分かって使うなら、次のコード。 (LindedCellプロパティは使用しない) '------------------------------------------------- Sub test333() Dim N As Integer Dim myValue(3) For N = 1 To 3 myValue(N) = ActiveSheet.OLEObjects("CheckBox" & N).Object.Value Next N End Sub '-------------------------------------------------- 以上。
その他の回答 (2)
- Dxak
- ベストアンサー率34% (510/1465)
> Checkboxがチエックされたかどうかは.ValueがTrueかFalseになるの > ではなかったですか? 多分、デバッグの方法が判ってれば、型がウォッチで判りますので、こういう質問が出ることは無いのですが・・・ CheckBox型であれば、.Valueで値が取得可能ですが・・・ > ActiveSheet.Checkbox1 は、CheckBox/CheckBox > ActiveSheet.Shapes(i) は、Object/Shape 要するに、Shape型に、値があるはずもなく、描画しているチェックボックスの型 ActiveSheet.Shapes(i).DrawingObject.Object まで、CheckBoxの型を追いかけなければ、出てきません まずは、デバッグのやり方を覚えないと、基礎の基礎が判らないまま、手探りでVBAを組むようになりますよ > 書いていませんでしたがフォームのCheckboxではなく > コントロールチエックボックスのCheckboxを使っています。 これは、一緒の話、クラスの親が違うだけ、親によって、格納される場所が違うと言うのは、最初の話
- Dxak
- ベストアンサー率34% (510/1465)
例えばで Dim usObj As Object For Each usObj In ActiveSheet.Shapes If usObj.Name Like "Check*" Then Debug.Print usObj.Name, usObj.DrawingObject.Object.Value End If Next usObj そもそも論、 ActiveSheet.Shapes(i)に、Valueは有りません デバッグの方法、判ります? それが判ってれば、こんな話質問するまでも無いと思うけど? あと > i=0 は、For文で初期化してるから無駄 > i=i+1 For文の中で、iを足し算するのは?なぜ?
補足
>ActiveSheet.Shapes(i)に、Valueは有りません Checkboxがチエックされたかどうかは.ValueがTrueかFalseになるのではなかったですか? (ActiveSheet.Checkbox1.Value=True) > i=0 iは入力間違いでした。 動的配列なのでiiとかでした。 書いていませんでしたがフォームのCheckboxではなく コントロールチエックボックスのCheckboxを使っています。
お礼
onlyrom様 ActiveSheet.OLEObjects("CheckBox" & N).Object.Value を使わせていただきました。 ありがとうございました。