- ベストアンサー
セル範囲を返す関数
次のようにしますと「型が一致してません」エラーになってしまいます。 どうしたらセル範囲を返す関数が作れますか? Public Function inuinu() As Range Set inuinu = Range(Cells(1, 1), Cells(3, 3)) 'Debug.Print inuinu.Count End Function 返値にAreasの指定もしてみましたが巧くいきませんでした。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>?inuinu >としてみたら「型が一致しません」とエラー表示されてしまう ? inuinu は ? Range("A1:C3") 即ち ? Range("A1:C3").Value と同じでValueプロパティが省略されていると見なされる。 ということは、複数のセルの値を同時に表示させようとしていることになるのでエラーになる。 但し、inuinuがセル範囲ではなく、セルをひとつ返すとき(例えば、B5だけ返す場合)はエラーにはならないで、その返されたセルの値が表示される。 (結論) inuinu関数から返されたセル範囲のセルの数を表示させたいなら、Countプロパティを省略しては拙いということです。 ? inuinu.Count とか ? inuinu.Cells.Count 以上。
その他の回答 (2)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>?inuinu としてみたら「型が一致しません」とエラー表示されてしまいました。 inuinu だけならエラーになりませんよ。
お礼
ありがとうございます。 おかげさまでかなり理解できました。
- hana-hana3
- ベストアンサー率31% (4940/15541)
何をしたいのか解りませんが、提示されたコードを貼付けた後、下記のコードを実行したらアドレスを取得できましたよ。 Sub test() MsgBox inuinu.Address End Sub
お礼
ありがとうございます。 hana-hana3さんのご回答のようにしてみたらこれは何のエラーもなく実行できました。 最終的にやりたいことは複雑なセル範囲のセルの個数を返す関数ですが 私は、Sub test()を介さずに、イミディエイトウィンドウから直接 ?inuinu としてみたら「型が一致しません」とエラー表示されてしまいました。 なぜ、このようなことが起きるのだろうか疑問に思っています。
お礼
ありがとうございます。 おかげさまでVBAのメカニズムが理解できました。