ISBLANK関数の対象セルを指定するコードの書き方は?

Question 013p Previous Next
61ページ 2章1-4 裏技[2] ◆ 環境・・ Excel 2002 & Windows 2000
詳細は こちら
「指定したセルが空白セルか調べる」についてですが、
セル = "B1" の代わりに、セル = Cells(1,2) と記述するとエラー(型の不一致)になるのは何故ですか?
とても初歩的な質問ですが、ご回答いただけますようお願い申し上げます。
Sub Macro7()
    セル = Cells(1, 2)
    ワークシート関数式 = " ISBLANK(" & セル & ")"
    If Evaluate(ワークシート関数式) Then MsgBox "空白セルです"
End Sub
Answer   Copyright (C) 2006.7.21 永井善王
拙著「ExcelVBAマクロ組み方講座 プロの定番・裏技・合わせ技[編]」をご購読、ありがとうございます。大変申し訳ありませんが、私は只今執筆中で殆ど時間が取れないので、要点だけをご回答させていただきます。

セル = "B1"セル = Cells(1,2) が 同じとお思いのようですが、まったく違います。
本のコード
セル = "B1" は、「セル」という変数に文字列の B1 が代入されますが、あなたの書き方では、「セル」という変数にB1セルに入っている値が代入されます。
もしも本が、Range("B1") となっていたら、Cells(1, 2) でも良い場合があります。

ワークシート関数式の ISBLANK については、Excelの一般機能のヘルプで簡単に見ることができますから、すでに、ご覧になっているとは思いますが、=ISBLANK(A2) というように、かっこの中は、セルの行列番号だけと なります。

なお、
セル = Cells(1,2) としたい理由が、空白かどうかを調べたいセルの行列番号を B1セルに入れておくつもりでしたら、B1セルに例えば A1 というように入力しておいてからマクロを実行すれば結果が表示されます。
では、頑張ってください。

 

Excel VBA Macro