◆◆MS-Excel2000スキルアップ講座/VBA編◆◆

セル範囲を返すプロシージャ
ユーザーにセルを選択させるため、inputboxメソッドを使ってみましたがどうしてもうまくできないことがあります。それはヘルプを参考に、次のように引数typeを8にしてrangeオブジェクトを返すようにした場合、

Set myRange = Application.InputBox(prompt := "セル範囲", type := 8)

ダイアログボックスをキャンセルするとエラーが発生してしまいます。On errorステートメントで回避しようとしても、無効な入力をした場合とキャンセルが区別できません。しかし、falseも返せるように引数をtype := 8+4にすると、今度はセルを選択できなくなってしまいます。

当方の目的は、マクロの実行中にそのマクロの実行先としてキーボードからアドレス
を入力するのではなく、マウスによりrangeオブジェクトそのものを選択したかった
のです。そうしないと、この場合グラフの元データなのですが、ワークシートのどこ
(どの列)に目的のセルがあり、その範囲(データ数)がどのくらいかが毎回異なる、さ
らには画面に入っていない場合もありうるからなのです。
そこで、これが最も言いたいのですが、inputboxメソッドでrangeオブジェクトの参
照とダイアログボックスをキャンセルした場合に返されるfalseの複数のデータ型を
指定できるようにできないか、または自分が間違えているのか。

下のNot TypeName(myCell) = "Nothing"の部分は, Not myCell Is Nothing でい
けると思います。(関数と思っていたけど,IsNothing(myCell)ではなかった。)

Sub test()
Dim myCell As Range

Worksheets(1).Activate
On Error Resume Next

Set myCell = Application.InputBox( _
    prompt:="セルを選択してください。", Type:=8)
If Not TypeName(myCell) = "Nothing" Then
    disp myCell
End If
End Sub

Sub disp(st As Range)
MsgBox st.Value
End Sub

かいとう2 

> 今組んでいるExcel97のマクロ上でユーザーにセルを選択させるため、inputboxメ
> ソッドを使ってみましたがどうしてもうまくできないことがあります。

Excel2000では RefEditという コントロールがあります。