VBA100本ノック 18本目:名前定義の削除

こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。

上記リンク先から、問題文を転載。
f:id:Infoment:20220131204720p:plain

参照範囲に「#REF!」が含まれるのは、良くあることで。しかも自分以外が
作成したファイルで起こると、気づきないまま増殖していることも。

今回は、名前の値に「#REF!」が含まれるか否かで判別することとした。
なお、判別はLike演算子で行い、#と!は[]で括ることでエスケープしている。

Sub VBA_100Knock_018()
    Dim 名前 As Excel.Name
    Dim 非表示件数 As Long
    Dim 削除件数 As Long
        For Each 名前 In ActiveWorkbook.Names
            ' 非表示があれば表示してカウント。
            If Not 名前.Visible Then
                名前.Visible = True
                非表示件数 = 非表示件数 + 1
            End If
            
            ' 参照エラーがあれば削除してカウント。
            If 名前.Value Like "*[#]REF[!]*" Then
                名前.Delete
                削除件数 = 削除件数 + 1
            End If
        Next
        
        Debug.Print Format(非表示件数, "非表示件数:00件")
        Debug.Print Format(削除件数, "削除件数 :00件")
End Sub

解答を実行した結果がこちら。
f:id:Infoment:20220131210030p:plain

※冒頭リンク先の解答例および解説も、ぜひご一読ください。

参考まで。