名前定義と入力規則のリンク切れと外部参照を確認します。
結果はメッセージボックスに表示されます。
Sub 名前定義と入力規則のリンク切れと外部参照確認() Dim sh As Worksheet Dim nm As Name Dim strNameMsg As Variant Dim rng As Range Dim strVlistMsg As Variant '名前定義 For Each sh In Sheets For Each nm In sh.Names If InStr(nm.RefersTo, "#REF") > 0 Or InStr(nm.RefersTo, ".xl") > 0 Then strNameMsg = strNameMsg & vbCrLf & sh.Name & " : " & nm.Name & " : " & nm.RefersTo End If Next nm Next sh '入力規則 For Each sh In Sheets '入力規則が設定されているか確認 On Error Resume Next Set rng = sh.Cells.SpecialCells(xlCellTypeAllValidation) On Error GoTo 0 If rng Is Nothing Then '設定されていなければ何もしない Else '設定されている For Each rng In sh.Cells.SpecialCells(xlCellTypeAllValidation) If rng.Validation.Type = xlValidateList Then If InStr(rng.Validation.Formula1, "#REF") > 0 Or InStr(rng.Validation.Formula1, ".xl") > 0 Then strVlistMsg = strVlistMsg & vbCrLf & sh.Name & " : " & rng.Address(False, False) & rng.Validation.Formula1 End If End If Next rng End If Next sh '結果をメッセージで表示 MsgBox "[名前定義] " & strNameMsg & vbCrLf & vbCrLf & _ "[入力規則] " & strVlistMsg, _ vbOKOnly + vbInformation End Sub
・リンク切れは「#REF」が含まれているか、で判断してます。
・外部参照は文字列の中に「.xl」(例えば.xlsとか)が含まれているか、で判断してます。
・名前定義は[数式]-[名前の管理]でも確認できます。
・入力規則は設定されている一覧とかが出せないので、VBA以外で確認するのは大変です(1つ1つ規則が設定されているセルを確認するしかないはず)。Excel開いたときにリンクエラーが出て、[リンクの編集]の[リンクの解除]を押しても解除できないことがありますが、入力規則の中にエラーがいることが多いです。