いつもお世話になります。
指定シートの名前を削除するコードを教えていただき、試していたのですが、あるブックの時エラーになり、
: RefersToRange : <アプリケーション定義またはオブジェクト定義のエラーです。> : Range
というエラーになっていました。
ウィンドウで中身をみると、下記のコードのnの中のRefersToとかの値がまったく違うブックの名前になっており、最後に#REF!がついていたのでこれが原因なんだろうと思いますが、どうすればよいか全く分かりません。
一応、見えない名前の定義を消去するようなコードをかけて、#REF!になっていいる名前の定義を300ほどでてきたのを消しています。
リンクの編集のコマンドもグレーになっているので、リンクもないと思います。
もともと、そのブックを改造したんだと思います。
正常に動作するものは、きちんと自分のブックのシート名になっていました。
何か方法はありますでしょうか?
Sub sumple()
Dim n As Name
For Each n In ActiveWorkbook.Names
If n.RefersToRange.Parent.Name = "データ" Then
n.Delete
End If
Next n
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは。
>見えない名前の定義を消去するようなコードをかけて、#REF!になっていいる名前の定義を300ほどでてきたのを消しています。
前回、私が言いかけた件ですが、日経BP21 の芳坂さんが、ここの3-4で、この問題について触れています。
http://hp.vector.co.jp/authors/VA016119/kitan01. …
そのコード自体は、前回のように、On Error Resume Next ~ On Error Goto 0 で挟んで、エラーが出たら削除してしまう、という方法でよいのですが、今回の件は、意外に複雑な問題が含んでいるようなので、あまり自信はありません。
少し、手を入れてみました。
'//
Sub Sample1()
Dim n As Name
For Each n In ActiveWorkbook.Names
On Error Resume Next
If n.RefersToRange.Parent.Name = "データ" Then
n.Delete
End If
If Err.Number > 0 Then
n.Delete
End If
On Error GoTo 0
Next n
End Sub
'//
こんばんは。どうもありがとうございます。
自信がないとの事でどうかな?と思いましたが、このコードで一度動かすと元のコードでも正常に動きました。また、他のブックの名前などもなくなっていました。
とりあえず解決です。今度、変な症状が現れたら引っ越しも考えようと思います。
No.2
- 回答日時:
>どうすればよいか全く分かりません。
Sub sumple()
Dim n As Name
on error resume next
For Each n In ActiveWorkbook.Names
If n.RefersToRange.Parent.Name = "データ" Then
n.Delete
End If
Next n
End Sub
とかで動く範囲で動かせば、通常は用事は足ります。
>リンクの編集のコマンドもグレーになっているので、リンクもないと思います。
名前の定義の管理を確認して、要らない名前定義が残存してないか確認します。
>#REF!になっていいる名前の定義を300ほどでてきたのを消しています。
:
>もともと、そのブックを改造したんだと思います。
ゴミが溜まりまくった不具合ブックは、早々に見切りをつけた方が安心ですね。
名前の定義を全て削除するマクロは一連のご相談の最初で出てきましたので、まずはそれを使います。
あとはまっさらのブックを用意、今使ってるブックの「表範囲を」コピーしてまっさらブックに引っ越します。手抜きせず丁寧に手を動かしていけば、問題は無くなります。
一連のご相談の途中でも回答しておきましたが、ブックレベルの名前とシートレベルの名前をしっかり管理/理解しなければいけません。その両方を処置するサンプルマクロも回答済みですので、もう一度ご自分の一連のご相談を見直して下さい。
長い間色々な人が使ってきているんで、色々汚れてるんでしょうね。
一応、No.1さんのコードで1度動かすと症状は改善しました。
今度、変な問題が起こったら引っ越しも考えてみます。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
質問の定義が分からないので確...
-
皆さん定義を教えてください 「...
-
フーリエ変換について質問です。
-
カルタン部分代数の定義に関す...
-
無限から無限を引いたら何にな...
-
「logx^2=2logx」が間違って...
-
p⇒q=(¬p)∨qについて
-
ヘシアンが0の場合どうやって極...
-
「互いに素」の定義…「1と2は互...
-
ACCESS VBAでインポート定義の場所
-
この数学の問題が意味不明です。
-
1wordとは、何文字ですか?
-
1未満と1以下の違い
-
eの0乗は1ってどういう原理です...
-
数字の1とは何なのか?
-
正方行列ではない行列にも行列...
-
べき乗
-
Excelで関数ウィザードの説明欄...
-
最大元と極大元の定義の違いが...
-
EXCELで定義した名前をVBAで参...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
皆さん定義を教えてください 「...
-
べき乗
-
無限から無限を引いたら何にな...
-
1未満と1以下の違い
-
p⇒q=(¬p)∨qについて
-
「logx^2=2logx」が間違って...
-
数字の1とは何なのか?
-
「互いに素」の定義…「1と2は互...
-
変数の宣言の名称を教えてくだ...
-
ACCESS VBAでインポート定義の場所
-
日本語 ことば ひとまわり ふた...
-
ACCESS IIF関数 複数条件の設...
-
Excelファイルの「数式」タブ→...
-
e<3の証明を教えてください。
-
なぜ小数は自然数ではないので...
-
ヘシアンが0の場合どうやって極...
-
2進数の符号ビットの入った数...
-
最大元と極大元の定義の違いが...
-
eの0乗は1ってどういう原理です...
-
フーリエ級数展開の初項はなぜa...
おすすめ情報