[[20230425085146]] 『チェックボックスのチェックをクリアするVBAが動香x(ど素人) ページの最後に飛ぶ

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

 

『チェックボックスのチェックをクリアするVBAが動作しなくなった。』(ど素人)

4月20日に表中から目的の数字を抽出する関数のことで質問したものです。
その質問は、いまのところ解決しましたが、新たな問題が発生し戸惑っています。
トラブルは要約のとおり、2枚のシート中のチェックボックス(フォームコントロールで作成したチェックボックス)にいろいろチェックを入れた後、一括してチェックを外すためのVBAが、突然動作しなくなった。…と言うものです。

動作しなくなる直前辺りに何をしていたか…と言うと、表中に配置したチェックボックスの見た目を、ただの□から3−D表示に変更するため、コントロールキーを押しながら右クリックですべてのチェックボックスを選択し、コントロールキー+1キーでコントロールの書式設定を開き、一番下の「3−D表示」…を選んだだけなんですが…。
この間、チェックボックスに入れたチェックを一括して外すためのVBAは全くいじっていません。
チェックボックスを久リアするVBAは次のとおりで、いろいろなExcelの案内をしているHPを参考にしたものです。

何かご教示をいただければと思います。

Sub チェックボックスクリア()

    Worksheets("計算表").Activate

    Worksheets("試算表").Activate

    Dim chkBox As Excel.CheckBox

    Application.ScreenUpdating = False

    For Each chkBox In ActiveSheet.CheckBoxes

            chkBox.Value = xlOff

    Next chkBox

    Application.ScreenUpdating = True

    Worksheets("計算表").Activate

End Sub

…以上が、登録してあるVBAです。

よろしくお願いいたします。

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


 一応動くけど?

 シート名が違うとかが濃厚かと?

 >ActiveSheet.CheckBoxes

 ActiveSheetとやらず、直に指定して方が良いんでない。

 Sheets("xxxx").CheckBoxes

 ま、アップデートが原因とも捨てがたいけど。
(M) 2023/04/25(火) 09:29:53

■1
>突然動作しなくなった
それはどうやって確認されたのでしょうか?
エディタで(ステップ)実行しようとしてもダメなのでしょうか?

■2
提示のコードを整理するとこうなりませんか?

 Sub チェックボックスクリア()
     Dim chkBox As Excel.CheckBox

     For Each chkBox In Worksheets("試算表").CheckBoxes
         chkBox.Value = xlOff
     Next chkBox
 End Sub

VBAの世界では基本的にシートやセルなど(オブジェクトといいます)をきちんと明示すれば、いちいちアクティブにしたり選択したりする必要がありません。
今回のコードでは

  Worksheets("計算表").Activate        ・・・・・・すぐに「試算表」をアクティブにしてるから意味がない

  Worksheets("試算表").Activate        ・・・・・・オブジェクトを明示すれば不要
  〜〜ActiveSheetを対象にした処理〜〜

  Worksheets("計算表").Activate        ・・・・・・他シートをアクティブにしなければ不要

となっているので、「チェックボックスクリア」を実行する状況によっては、対象オブジェクトを明示した処理部分だけでよいとおもいます。

(もこな2) 2023/04/25(火) 12:04:55


「M」さま、「もこな2」さま…コメントありがとうございます。
VBAの書き方でも、不要な行の指摘もあるとのご指摘、ありがとうございます。

…VBA…出来ないので、分からないなりに、これでもか、これでもか…と追加に追加…って感じです。

ところで、動かないのは、確かです。
原因が分からず困っています。
つい先週までは動いていました。
…が、昨日、チェックボックスを3個増やした結果動かなくなりました。

それも、その一つは、チェックボックスのクリアが出来なくなってから、チェックも入らなくなりました。

…で、そのチェックボックスは削除し、新たにフォームコントロールのチェックボックスを張り付けたところ、チェックが入る様になり、チェックボックスクリアVBAで、クリアが可能になりました。

…で、それじゃ…と他のチェックボックスのうち、取り敢えず3個を同じ様に、削除し新たに付け直しました。
…が、この3個は、クリア出来ません。

…???

何故こうなるのか?

不明です。

どうしたものでしょうか…

(ど素人) 2023/04/25(火) 14:20:08


まあ、とりあえず

張り付けたところ

これやめたら。

たぶんこれが原因。
もう遅いかも?
初めから新規ブックで作り直すことになるかもね。
というか作り直した方が良いと思います。
(M) 2023/04/25(火) 15:25:59


コメントくださった皆様…

VBAが、突然動き出した…機能し出しました。

いただいたコメントのとおり、無駄な行を削除し、シンプルな状態にしたところ、機能し出しました。

ただ、後で追加した3個のチェックボックスのうち、2個が、チェックも入らなくなりました。
…が、再度新しいチェックボックスを配置したら、VBAでチェックが外せるようになりました。

やったのは、それだけですが、合計30個のチェックボックスの一括クリアが出来る様になりました。

原因は、未だ分かりません。
(ど素人) 2023/04/27(木) 09:06:59


コメント返信:

[ 一覧(最新更新順) ]


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