次の方法で共有

ActiveSheetのCheckBoxes(1) はプロパティ?メソッド?

Anonymous
2025-04-20T02:38:15+00:00

Excel VBA で ActiveSheet.CheckBoxes(1) でシート上のCheckBoxにアクセスできて、

チェックボックスの選択状態も判定できるのですが、WorkSheetのプロパティには

CheckBoxesは見当たりません。

また、別サイトで調べても、WorkSheetが提供するメソッドにも見当たりません。

マクロは正常動作するので問題ないのですが、CheckBoxes()とは何者なのか、気になって

仕方ありません。どなたかご教示頂けませんでしょうか?

よろしくお願いします。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

  1. Anonymous
    2025-04-20T23:42:58+00:00

    > ActiveSheet.CheckBoxes(1)

    この場合の CheckBoxes は、Excel.Worksheet オブジェクトの非表示メソッドです。

    画像

    また、フォームコントロールのチェックボックスを意味する
    Excel.CheckBox オブジェクトや、それらのコレクションである
    Excel.CheckBoxes オブジェクトは Excel の非表示メンバーです。

    画像

    ・引数 Index を指定した場合は、そのワークシート上に
     配置された 1 つの Excel.CheckBox オブジェクトを返す。
     Index には、そのチェックボックスの番号(最小値 1 )を示す任意の整数か、
     そのチェックボックスの名前を示す任意の文字列のいずれかを渡すことが出来る。


    Private Sub Test1()
    
        Dim ws As Excel.Worksheet
        
        Set ws = Worksheets(1)
       
        Dim chb As Excel.CheckBox
        
        Set chb = ws.CheckBoxes(1)
        
        Debug.Print "ワークシート[" & ws.Name & "]上に配置されている " & _
                    chb.Index & " 番目のチェックボックス(フォームコントロール)の名前は" & _
                    "[" & chb.Name & "]です。"
        
        Set chb = Nothing
        Set ws = Nothing
        
    End Sub
    

    ・引数 Index の指定を省略した場合は、そのワークシート上に
     配置された全てのチェックボックスのコレクションである
     Excel.CheckBoxes オブジェクトを返す。


    Private Sub Test2()
    
        Dim ws As Excel.Worksheet
        
        Set ws = Worksheets(1)
    
        Dim chbxs As Excel.CheckBoxes
        
        Set chbxs = ws.CheckBoxes
        
        Debug.Print "ワークシート[" & ws.Name & "]上に配置されている" & _
                    "チェックボックス(フォームコントロール)の数は " & _
                    chbxs.Count & " 個です。"
        
        If chbxs.Count = 0 Then
            Set chbxs = Nothing
            Set ws = Nothing
            Exit Sub
        End If
        
        Debug.Print "全てのチェックボックスの番号と名前を列挙します。"
        
        Dim chb As Excel.CheckBox
        
        For Each chb In chbxs
            Debug.Print chb.Index & vbTab & chb.Name
        Next
    
        Set chbxs = Nothing
        Set ws = Nothing
        
    End Sub
    

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません

5 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2025-04-21T02:14:55+00:00

    なるほど。非表示メソッドという概念があったのですね。知りませんでした。

    また、Object Browserは、存在自体も知りませんでした。

    ExcelもVBAも、解説本は1冊も持っていないので、わからないことはネット検索だけが頼りです。CheckBoxesの引数の指定方法も、手探りの試行錯誤で分かったのですが、解説本(プロ向け?)には書いてあるんでしょうね。

    ご教示、ありがとうございました。

    0 件のコメント コメントはありません
  2. simo-k 80,865 評価のポイント ボランティア モデレーター
    2025-04-20T15:48:05+00:00

    オブシェクトである事には変わりはありませんが、どういう風にCheckBoxを配置するかによって

    微妙に扱いが変わるものですね。

    (ユーザーフォームに配置したら単純なCheckBoxオブシェクト。)

    0 件のコメント コメントはありません
  3. Makapu 91,790 評価のポイント ボランティア モデレーター
    2025-04-20T15:27:07+00:00

    こんにちは。

    参考になりそうな記事がありましたのでご確認下さいね。

    フォームコントロール|VBA入門

    ActiveSheet.CheckBoxes(1) はプロパティでもメソッドでもなく、コレクションの一部として扱われるオブジェクトです。

    Excel VBA では、CheckBoxes は ワークシート上のフォームコントロールのチェックボックスを管理するコレクション であり、ActiveSheet.CheckBoxes(1) のように記述すると、シート上の最初のチェックボックスにアクセスできます。

    0 件のコメント コメントはありません
  4. simo-k 80,865 評価のポイント ボランティア モデレーター
    2025-04-20T14:56:57+00:00

    VBA(マクロ)の公式サポート場所は、海外コミュニティとなっています。

    有識者が集まっている所の方が、適切なアドバイスを受けやすいでしょう。

    Stack Overflow(VBA)

      [VBA プログラミングに関する質問]

      Stack Overflow には、説明的なタイトル、完全で簡潔な問題ステートメント、問題を再現する
      ための十分な詳細の要求などのガイドラインがあることに注意してください。
      機能要求または過度に広範な質問は、トピック外と見なされます。
      新しいユーザーの場合は、Stack Overflow ヘルプ センター にアクセスして詳細を確認して下さい。

    ※ 閲覧者・回答者が多い公式サポートサイトをお勧めします。

      英語で質問を送信してください。

    0 件のコメント コメントはありません