
実行環境は Excel 2000
新規ブックに、
標準モジュールを追加し、
Function Test()
Test = 2
End Function
という関数を追加します。
Sheet1 の、
セル「A1」に「10」を入れます。
セル「A2」に「=Test() + A1」
セル「A1」を変更すると、
関数「Test()」が呼び出されます。
このとき、ActiveCell は「A1」を指しますが、
関数「Test()」の位置を知りたいのです。
「No.720361 質問:Excel VBA でFunctionプロシジャがどのセルから呼び出されたか知る方法」では Application.Caller で出来ているようですが、Test() 内で「TypeName(Application.Caller)」とすると、「Double」や「Error」が返ってきます。
(この「Double」の値も気になりますが、、、)
位置の取得方法を教えて下さい、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
maruru01です。Testプロシージャを、以下のようにして、A2に、
「=Test()+A1」
としてみて下さい。
Function Test() As Double
With Application.Caller
Debug.Print .Row
Debug.Print .Column
Debug.Print .Address
Debug.Print .Worksheet.Name
End With
Debug.Print TypeName(Application.Caller)
Test = 2
End Function
イミディエントウィンドウには、
2
1
$A$2
Sheet1(ここは実際のシート名)
Range
と出力されると思います。
Application.Callerプロパティは、Rangeオブジェクトを返します。
(だから、TypeName関数は「Range」を返すはずです。)
なりました、ありがとうございました。
ですが、疑問が残りました。
というのは、上記関数内にブレイクポイントを設定し、
止まったときにイミディエイトウィンドウから、
「?TypeName(Application.Caller)」とすると
「Error」(私の実際の関数では「Double」)を返すのです。
私は、これで「Range」が返らない返らないと悩んでおりました。
イミディエイトウィンドウの「Double」は何なのでしょうか?
また、どういった理由で違ったオブジェクトを返すのでしょうか?
maruru01さま、あるいはどなたかよければ教えて下さい。よろしくお願いします。
No.2
- 回答日時:
>「Error」(私の実際の関数では「Double」)を返すのです。
私も確認しました。
ヘルプによると、Application.Callerプロパティは、呼び出された方法によって、セットされる値が違います。
で、プロシージャの実行中断時に、イミディエントウィンドウ上で呼び出されると、「Double」を返すようです。
ただし、何故「Double」かは分かりません。
また、実行中で無い時に、イミディエントウィンドウで呼び出すと、エラー(#REF!)を返すようです。
エラーはともかく、何故「Double」なんでしょうね。
他の方の回答をお待ち下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のExcelファイルをマージす...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
エクセルの改行について
-
【マクロ】並び替えの範囲が、...
-
【ExcelVBA】値を変更しながら...
-
Vba FileSystemObject オブジェ...
-
VBA ユーザーフォーム ボタンク...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
Vba セルの4辺について罫線が有...
-
[Excel VBA]特定の条件で文字を...
-
エクセルVBAのブックを開く方法...
-
Excel VBA 選択範囲の罫線色の...
-
vbsでのwebフォームへの入力制限?
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
ダブルクリックで貼り付けた画...
-
VBAの「To」という語句について
-
算術演算子「¥」の意味について
-
Excel マクロについて詳しい方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba Array関数について教えてく...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】シートの変数へ入れ...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBAでユーザーフォームを指定回...
-
【マクロ】開いているブックの...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
-
ワードの図形にマクロを登録で...
-
VBAの「To」という語句について
-
【マクロ】変数を使った、文字...
おすすめ情報