VBA100本ノック 18本目:名前定義の削除
こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。
上記リンク先から、問題文を転載。
参照範囲に「#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
解答を実行した結果がこちら。
※冒頭リンク先の解答例および解説も、ぜひご一読ください。
参考まで。