[[20250318093930]] 『Officeバージョンアップ後のVBAの不具合』(soichiro) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『Officeバージョンアップ後のVBAの不具合』(soichiro)

Microsoft365を2208から2408にアップしました。
ExcelVBAの動作が変わりました。
正常に動作するように直したいです。

▼以前はこの記述でシート1と2の文字がクリアできていましたが、
シート1しかクリアできなくなりました。

Sheets(Array(1, 2)).Select
Sheets(1).Activate
Range("A2:A12").Select
Selection.ClearContents

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


 動作が不安定であれば、そうしたSelectを使った方式に依らない書き方をこの際採用しましょう。
 Sub test2()
    Dim ws As Worksheet
    For Each ws In Sheets(Array(1, 2))
        ws.Range("A2:A12").ClearContents
    Next
 End Sub
(xyz) 2025/03/18(火) 10:19:21

シート指定のないRangeはActiveSheetのRangeのことを指すのでシート2のRangeもクリアしたいのであれば、シート1のクリアの後にシート2をActivateしてクリアするかxyzさんのようにシート指定ありのRangeに変更したらいいと思います

そもそも元のコードでシート2もクリアできていたことが私にはよく分からないので、詳しい方が説明してくれるといいのですが…
(ささみ) 2025/03/18(火) 10:25:17


2016が勝手に2021?になってたエクセルですけど
同じようにできませんでした
Selection.Clear
だとできました
昔はできてたのか覚えていませんが、
なんか残念な結果でした

(残念) 2025/03/18(火) 10:44:30


なんか冤罪のにおいがする。
不具合と決めつけられて、VBAが可哀想。
おそらく質問者の記憶あるいは認識の不具合かと。

(国選弁護人) 2025/03/18(火) 10:52:13


 2016でsoichiroさんの書かれたマクロを試したけど1枚目、2枚目のシートのA2からA12セルがクリアされた。

 またSheet1とSheet2を選択してSheet1のセル範囲を選択してDeleteキーを押すというのをマクロ記録した。
 もちろんSheet1、Sheet2ともに同じセル範囲がクリアされた
 Sub Macro1()
 '
 ' Macro1 Macro
 '

 '
     Sheets(Array("Sheet1", "Sheet2")).Select
     Sheets("Sheet1").Activate
     Range("C5:F10").Select
     Selection.ClearContents
 End Sub

(ノーム) 2025/03/18(火) 11:02:04


 >2016でsoichiroさんの書かれたマクロを試したけど1枚目、2枚目のシートのA2からA12セルがクリアされた。

なに?

なんか冤罪のにおいがする。
不具合と決めつけられて、質問者が可哀想。
おそらく当方の記憶あるいは知識の不具合かと。
辞任させていただきます。

(国選弁護人) 2025/03/18(火) 11:33:00


 # ちなみにこちらの環境はExcel365(version2503)です。質問者さんと同じ動作結果ですね。

 なるほどClearだと消えますね。知りませんでした。なぜなんでしょうね。

 Range("A2:A12").Selectは、Selectは基本的にやめましょうという話の中で、
 Selectが必須な珍しい局面であることは承知しています。

 しかし、ユーザーにとって理解しにくい動作をするものにはこの際見切りをつけて、
 標準的な繰り返し処理をメインに据えたほうがよいと思います。(くどいかも)
 ・別に速度的に大きく劣後するわけではないと思いますし、(内部ではおなじことをしているはず)
 ・標準的な書き方で統一するメリットのほうが大きいと思います。
 ・どうやら2016では動作していたようでversion依存だったり、
   365でもClearContentsはダメだがClearは動作するとか、
   こういった秘伝めいたものは極力少なくした方が精神衛生にも良いと思います。
 まあ、基本的には個人の自由ですけど。
(xyz) 2025/03/18(火) 11:39:16

 soichiroさん

 >Selection.ClearContents
 を
 Selection = ""
 にして下さい。

 結合セルがあったりすると作業グループでのClearContentsは致命的な結果になります。
(jindon) 2025/03/18(火) 12:33:14

 一応Clearだと消えたり環境によっては動作したりするんですね。面白いと思いました

 私もxyzさんと同意見で不確定要素はなるべく排除して理解しやすい書き方をした方がいいと思います
(ささみ) 2025/03/18(火) 13:16:25

コメント返信:

[ 一覧(最新更新順) ]


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