[[20210626113639]] 『チェックボックス(フォームコントロール)の一括』(tt21) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『チェックボックス(フォームコントロール)の一括解除』(tt21)

フォームコントロールのチェックボックスが複数個あり、一部はグループ化されています。
これらの「ON」状態を一括解除(OFF)したく以下のマクロをネットから拝借しました。

 Sub CheckBox_Clear()
    Dim cb As CheckBox
    For Each cb In ActiveSheet.CheckBoxes
        If cb.Value = xlOn Then
            cb.Value = xlOff
       End If   
    Next cb
 End Sub

しかし、これではグループ化されたチェックボックスは解除されません。
※あとで考え直して、これはこれで有用なのでそのまま運用中です

グループ化されたのも含めて全て一括解除するにはどうしたらいいでしょうか?
※あるいは、グループ化されたもののみ解除でも構いません

よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


こんにちは

質問です。

リボンのデータタブからアウトラインで、グループ化、グループ解除で設定を
しているのでしょうか?

ActiveSheetに、チェックボックスを複数設置し、グループ化して
掲示されたマクロを試したら普通に外せましたが...

私のエクセル壊れてるのかな?^^;

(あみな) 2021/06/26(土) 15:04


 あみなさん同じ結果でしたよ。
 そうですよね。グループ化ってどうやっているか疑問ですよね。

 試してみてください

 Sub 解除()
    ActiveSheet.CheckBoxes.Value = False 
 End Sub

(RT) 2021/06/26(土) 15:30


あみなさん、RTさんありがとうございます。

この機能は初めて知りましたが、例えばチェックボックスが縦一列に5個あるとして
上から2番目と4番目をグループ化するにはどうするのでしょうか?

私はチェックボックスを選択した後に、シートの上部に表示される「描画ツール」で
グループ化しています。

補足)
最初にグループ化されていないのを一括解除、次に全てを一括解除したくて質問アップしました。
(解除作業が2段階になるという意味です)

(tt21) 2021/06/26(土) 16:18


 >例えばチェックボックスが縦一列に5個あるとして 
 >上から2番目と4番目をグループ化するにはどうするのでしょうか?

 例えばですか・・・。
 もっと煮詰めてから、質問した方が良いのでは・・・。
 この先コロコロ変わりそうなので。

 単純には、上から2番目と4番目を選択してから、グループ化されればいいのではないでしょうか。
(面倒くさいです) 2021/06/26(土) 16:38

地道に、判定すると
 Sub test()
    Dim gcb As Shape, cb As Shape

    For Each gcb In ActiveSheet.Shapes
        If gcb.Type = msoGroup Then
             For Each cb In gcb.GroupItems
                If cb.Type = msoFormControl Then
                    If cb.FormControlType = xlCheckBox Then
                        cb.ControlFormat.Value = xlOff
                    End If
                End If
            Next cb
        End If
    Next gcb

 End Sub

(マナ) 2021/06/26(土) 16:50


 >単純には、上から2番目と4番目を選択してから、グループ化されればいい…

「データ」タブ→アウトラインからの方法では、「グループ化」項目が“グレー”表示になって
操作できないのですが…(何か私の勘違いでしょうか)

マナさんありがとうございます。
グループ化されたのを一括解除できました!
私のグループ化の仕方だと、このような段階を踏む必要があるんですね?
「Shape」が出てきて戸惑ってる私にはムズそうですが、使わせていただきます。
(最終的には、一つのマクロで2種類の一括解除を選択式にするつもりです)

これからもよろしくお願いします。
(tt21) 2021/06/26(土) 18:25


 >(最終的には、一つのマクロで2種類の一括解除を選択式にするつもりです) 
 Sub test()
    Dim gcb As Shape, cb As Shape
    For Each gcb In ActiveSheet.Shapes
        If gcb.Type = msoGroup Then
             For Each cb In gcb.GroupItems
                If cb.Type = msoFormControl Then
                    If cb.FormControlType = xlCheckBox Then
                        cb.ControlFormat.Value = xlOff
                    End If
                End If
            Next cb
        End If
    Next gcb
    ActiveSheet.CheckBoxes.Value = False 
 End Sub
 RTさんのコード追加で上記は満たされますよ。
 検証済みです。
(you) 2021/06/26(土) 20:31

確認遅れてすみません…

先ずグループ化されたのを解除後に、されてないのを一括解除、
結果、グループ化されたのも含めて全て一括解除できますね。

youさんありがとうございます。
(tt21) 2021/06/27(日) 09:15


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.