[[20200809083946]] 『ブック内のトグルボタンをOFFにする』(初心者) ページの最後に飛ぶ

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

 

『ブック内のトグルボタンをOFFにする』(初心者)

sheet1,2,3,4のそれぞれにトグルボタンを設置し、下記コードを登録しています。
トグルボタンを押すたびに不要な行の表示・非表示を切り替えています。

Private Sub ToggleButton1_Click()

  Application.ScreenUpdating = False
 With ToggleButton1
        If .Value Then
        .Caption = "0値及び小科目以降表示"                         'トグルボタンONの処理
         Range("B6:C250").AdvancedFilter _
        Action:=xlFilterInPlace, _
        CriteriaRange:=Range("B2:C4"), _
        Unique:=False
    Application.ScreenUpdating = True
            MsgBox "0値及び収益以外の小科目以降を非表示にしました。", vbInformation
        Else
            'トグルボタンOFFの処理
            .Caption = "0値及び収益以外の小科目以降非表示"
           Range("C6:C250").AdvancedFilter _
        Action:=xlFilterInPlace, _
        CriteriaRange:=Range("C2:C4"), _
        Unique:=False

       Application.ScreenUpdating = True
        MsgBox "0値及び小科目以降を表示しました。", vbInformation
        End If
    End With

End Sub

これを別でコマンドボタンを設置し押したときに、4つすべてのトグルボタンに対してONの状態ならOFFに、OFFになっていたらそのまま(何もしない)という風にしたいのですができません。
やる方法がありますか?

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


 Sub test()
    Sheet1.ToggleButton1.Value = Not Sheet1.ToggleButton1.Value
    Sheet2.ToggleButton1.Value = Not Sheet2.ToggleButton1.Value
    Sheet3.ToggleButton1.Value = Not Sheet3.ToggleButton1.Value
    Sheet4.ToggleButton1.Value = Not Sheet4.ToggleButton1.Value
 End Sub
 なんていうのではどうですか?(ボタン名、シート名は適宜修正してください)
(γ) 2020/08/09(日) 09:17

問題読み違えていました。
OFFにするだけなら、値を Falseにセットするだけでした。

(γ) 2020/08/09(日) 09:22


ありがとうございます。
できました。

最後のメッセージの

MsgBox "0値及び小科目以降を表示しました。", vbInformation

は実行されないようにしたいのですができますか?
(初心者) 2020/08/09(日) 10:05


 >MsgBox "0値及び小科目以降を表示しました。", vbInformation
 その行だけ削除すればいいんじゃないですか。
 またはMsgBoxの頭に(')をつけてコメントアウトしたらどうですか。
(um) 2020/08/09(日) 11:00

各トグルボタンから実行した場合はmsgboxを表示させたいのですが、コマンドボタンから一括実行したい場合は表示させたくないなと思ってでした。
無理って事ですかね?
(初心者) 2020/08/09(日) 11:16

 フラッグを使って、表示非表示を切り分けたらどうですか?

 (1)
 標準モジュールで以下のフラッグを宣言しておく
 Public silentFlag  As Boolean

 (2)
 それぞれのToggleButton1_Click()のなかで、以下のように修正
 If silentFlag = False Then
     MsgBox "0値及び小科目以降を表示しました。", vbInformation
 End If

 (3)一括OFFの実行時にはフラッグを立ててから実行し、元に戻す。
 Sub test()
     silentFlag = True
     Sheet1.ToggleButton1.Value = False
         ' 他も同じ。省略
     silentFlag = False
 End Sub
(γ) 2020/08/09(日) 12:32

ありがとうございます。
おかげさまでできました。
(初心者) 2020/08/10(月) 21:20

コメント返信:

[ 一覧(最新更新順) ]


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