VBA勉強中のものです。以下のコードでユーザー定義関数からオブジェクト型を返すとエラーが出るのてすが、何故でしょうか教えて下さい。

VBA勉強中のものです。以下のコードでユーザー定義関数からオブジェクト型を返すとエラーが出るのてすが、何故でしょうか教えて下さい。 Function getRange(Rng as Range)as Range Set getRange =Range("B4:D6") End Function Sub callFunc() getRange(Range("B2:D6")).Select ★エラー発生 End sub エラー内容 オブジェクト変数またはWithブロック変数が設定されていません

補足

原文まま貼り付けます。 パターン分けして調べた所ユーザー定義関数内の1文が影響し、callFunc()に戻った直後エラーになることが分かりました。 OKと記述した文だとエラーは出ず、エラーの文と順番を入れ替えても変わりません。OK文はエラー文のコピペではなく改めて手入力しました。 今後のデバッグ時の参考にしますので何か分かることはあれば教えて下さい。 Function getDataRange(tableRng As Range) As Range '    Set getDataRange = tableRng.Rows("2:" & tableRng.Rows.Count)   'OK     Set getDateRange = tableRng.Rows("2:" & tableRng.Rows.Count)    'エラー End Function Sub callFunc()      getDataRange(Range("B2:D6")).Select End Sub

Visual Basic29閲覧

ベストアンサー

1

質問のプログラムでは、質問の中のエラーはでません。 関数getRangeは引数を使わず、必ずRange("B4:D6")を返します。 質問のプログラム中のスペースの間隔から、コピペではなくプログラムを打ち直しているのではないかと思われますが、もしも打ち直している場合は間違っていないか確認してください。

1人がナイス!しています

ThanksImg質問者からのお礼コメント

お手間取らせて申し訳ないです。スペルミスだけはないと思ってたのですが確認不足でした。 ソースは書籍のサンプルからの抜粋でしたので特に意味はありませんでした。 ありがとうございました。

お礼日時:9/24 10:00

その他の回答(1件)

0

当方のPCで実行しましたが、ご指摘のエラーは発生しません。 新規ブックで実行しても同じ現象が起きるのですか?

この返信は削除されました