エクセルのマクロで膨大な量の名前の定義を一括で削除させたくて、こんな風に書いたんだけど
For Each n In ActiveWorkbook.Names
If InStr(1, n.Name, "Print_Area") = 0 Then
n.Delete
ElseIf n.Value Like "*[#]REF!*" Then
End If
なぜか参照エラーになってるプリントエリアを消すべきところでエラー起こしてないプリントエリアが消される。
「Print_Area」だけど参照エラーになってるものが一個だけあるからそれを消してほしいだけなんだけど、アクティブシートのプリントエリアが消されて参照エラーの方は生き残ってしまう。
なんで…?
【やりたいこと】
1.シート1を正しく参照しているもの
2.シート2を正しく参照しているもの
3.#REF!を参照しているもの
の3つがある。
この3つ目だけを消したい。
【なぜか起きること】
For Eachで上から順に1と2を素通りして、3つめのときにローカルウインドウでName.Valueが#REF!なのを確認しているのに、
3つ目をDelete すると1つ目が消える
+じゃなくてOr
そこは主題じゃなくね?
ある あとはたぶんLikeのとこ Instrとかにすればいけそう
試してみたけどいけないんよ。 ローカルウインドウでnの中身見れるじゃん? そこで正しくValueが#REF!の名前を拾えてるのにDeleteするとなぜかいまアクティブなシートのエラー参照じゃ...
エクセルマエストロさんに聞いてみた https://chat.openai.com/share/96a4d6ac-9d4c-4114-96e2-3b5f60a569f9
ありがたいけど指摘されたそこじゃないんよ。 なんならIf InStr(1, n.Name, "Print_Area") = 0 Then でやっても同じ
excelさんにも聞いてみた https://chat.openai.com/share/13e2bbb8-edc6-47fb-a583-f6b3e4001286
なるほどなあコレクションに 勉強になるわあ と思って試してみたらやっぱりアクティブシートのプリントエリアが消された。 もうこれそういうバグとしてあきらめてプリントエリア名...
わろた さっきから貼っててナンだけど、これらエクセルGPTさんはChatGPT4の知識だけで解答してるから微妙なんだよね これで無理だったらわっきゃんない https://chat.openai.com/share/f0ea02dc-5706-4...
何度もありがとう。なんて優しい増田なんだ。。。 やっぱりアクティブシートのプリントエリアが消された。 なんか気持ち悪いけど1個名前の定義が残ってる程度で別に何か起きるわけ...
ちょっと気になったから追求してみた、まあ知らない事もあったと思うから今後の検索にでも活かして!w https://chat.openai.com/share/f0ea02dc-5706-46ef-8503-5f9515724921
やってみたけど結局しっかりブック全体に属してるエラー参照のPrint_Areaを選択して削除してしっかりシート1のPrint_Areaが消された🤷♂️おてあげ 本当にありがとう!増田のあたたかさ...
全角コメント消してみるとか?
コメントあるとなんか関係あるの?
プログラミングあるあるやろ
それって隠し定義消せるかな。 隠し定義を見える定義に変える処理、必要じゃなかったっけ?
いま聞きたいことじゃないからはぶいてるけど、この記述の前に.Visible = Trueをつけてるよ