いつもお世話になります。
指定シートの名前を削除するコードを教えていただき、試していたのですが、あるブックの時エラーになり、
: 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」が間違って...
-
マイナス7は素数ですか?
-
0の階乗はなぜ1になるのですか?
-
方程式の記号で左右の辺を繋ぐ...
-
べき乗
-
同値関係の問題について
-
なぜ、直角三角形ではないのにs...
-
2進数の符号ビットの入った数...
-
三角関数(たとえばf(x)=sinxと...
-
数学における定義という言葉の意味
-
対角線論法の疑問
-
1未満と1以下の違い
-
eの0乗は1ってどういう原理です...
-
なにしてるかわからない。。
-
Z/2Zが体であることを示せば体...
-
「互いに素」の定義…「1と2は互...
-
交換法則が成り立って、結合法...
-
閉区間の微分可能って?
-
複雑な家庭とは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
皆さん定義を教えてください 「...
-
無限から無限を引いたら何にな...
-
べき乗
-
「logx^2=2logx」が間違って...
-
「互いに素」の定義…「1と2は互...
-
なにしてるかわからない。。
-
ACCESS VBAでインポート定義の場所
-
p⇒q=(¬p)∨qについて
-
1未満と1以下の違い
-
ヘシアンが0の場合どうやって極...
-
三角関数(たとえばf(x)=sinxと...
-
eの0乗は1ってどういう原理です...
-
『質問の定義が分からないので...
-
内積を
-
最大元と極大元の定義の違いが...
-
ACCESS IIF関数 複数条件の設...
-
質問の定義が分からないので確...
-
自然数 整数 有理数 実数 加法 ...
-
e<3の証明を教えてください。
-
変数の宣言の名称を教えてくだ...
おすすめ情報