質問: excelvba 有効なセルかどうかを判定するには いつもお世話になります。 指定されたセルが有効なセルかどうかを判定したいのですが、何かよい方法がないかどうか質問させていただきました。 ユーザにrangeオブジェクトの引数を入力してもらう形なのですが、指定された値が例えば、aaa などの場合、range("aaa")となり、当然これは無効なので、そのような指定はできませんよ、としたいのですが、これをエラーとしてハンドリングするのではなく、よい判定方法はないものでしょうか。 よろしくお願いします。
回答: 例えばrange("aaa")は無効と書かれておりますが、ある範囲に"aaa"と名前が付けられている場合だとrange("aaa")は有効となるはずですので、自分でパターンを1つずつチェックするというのは大変ではないでしょか? エラーハンドリングしたくないとありますが、私なら以下のような感じでチェック用のファンクションを使います。 ※インデントに全角スペースを使用しています。 ================================================================ function checkrange(strrange as string) as boolean dim rng as range on error goto rangeerror set rng = range(strrange) checkrange = true exit function rangeerror: checkrange = false end function 呼び出し側では以下のような感じで... msgbox "a1=" & checkrange("a1") msgbox "$a$1=" & checkrange("$a$1") msgbox "a1:b2=" & checkrange("a1:b2") msgbox "aa=" & checkrange("aa") msgbox "$a1$=" & checkrange("$a1$") msgbox "ああ=" & checkrange("ああ") msgbox "a:1=" & checkrange("a:1") ================================================================