
実行環境は 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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) excel関数について 3 2022/06/06 21:58
- Excel(エクセル) excel2013 色付きセルの値合計 3 2023/02/28 11:48
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
エクセルのVBAコードと数式につ...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vb.net(vs2022)のtextboxのデザ...
-
ダブルクリックで貼り付けた画...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
-
【マクロ】切取りの場合、形式...
-
改行文字「vbCrLf」とは
-
ExcelVBAでパワポを操作したい
-
testファイル内にある複数のpng...
-
エクセルVBA 検索結果を隣のシ...
-
Excelマクロで使うVBAコードを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報