エクセルVBA 「名前の定義」について
いつもお世話様です。エクセル2000での名前定義に関するVBA操作で疑問がありますのでよろしくお願い申し上げます。
(o。_。)oペコッ
以下のマクロで、あるエクセルのBOOKの名前の定義をすべて書き出してみました。
Sub Names_Check()
Dim nm As Object
Set sh = ActiveWorkbook.Worksheets.Add
For Each nm In ActiveWorkbook.Names
i = i + 1
sh.Cells(i, 1) = nm.Name
sh.Cells(i, 2) = "'" & nm.RefersTo
Next
End Sub
すると、なかにはセル範囲を参照していない名前の定義がけっこう見つかりました。
それらはよく見ると
=○○○.xls!△△マクロ
のようなマクロの名前を参照していました。
そんな名前の定義はつけた覚えが無いのですが、これは何でしょうか?
なぜそのような名前の定義が出来てしまうのでしょうか?
次にセル範囲を参照していないこれらの名前定義を削除するため下記のマクロを書いてみたところ、「実行時エラー1004 その名前は正しくありません」というエラーがでてしまいます。
どう書いたら削除できるのでしょうか?(もちろん手動では削除できます。)
Sub Del_NameRefQuestion() '不明な参照の名前定義削除
Dim nm As Object
Dim mystr As String, ans As Integer
For Each nm In ActiveWorkbook.Names
If InStr(nm.RefersTo, "$") = False Then
ans = MsgBox(nm.Name & "/" & nm.RefersTo, vbYesNo + vbQuestion, "削除しますか?")
If ans = vbYes Then nm.Delete ’ここでエラー
End If
Next
MsgBox "不明参照の名前定義削除完了", , " ( ̄ー ̄)v"
End Sub
お礼
名前の定義自体はセル範囲を選択してセル番号に直接名前を入力して設定していました。 それで削除ができず悩んでいました。 お陰様で解決しました。 ありがとうございました。