実行環境は 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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excel VBA でFunctionプロシジャがどのセルから呼び出されたか知る方法
Visual Basic(VBA)
-
エクセルvba:自己セルの情報取得方法について
Visual Basic(VBA)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
-
4
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
5
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
6
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
7
worksheet_changeがループする
PowerPoint(パワーポイント)
-
8
ユーザー定義関数に#NAME?が返ってくる
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォルダに格納されている...
-
IF文、条件分岐の整理方法
-
VBAコードのインデント表示
-
Outlookの「受信日時」「件名」...
-
【ExcelVBA】値を変更しながら...
-
A列に記載されているフォルダ...
-
Excel 範囲指定スクショについ...
-
VBA 別ブックからコピペしたい...
-
【ExcelVBA】インデックスが有...
-
VBA 別ブックから条件に合うも...
-
vba アクティブシートの名前変...
-
Excelのマクロについて教えてく...
-
VBAなくなるの?
-
vba 削除
-
エクセルのマクロについて教え...
-
Excelのマクロについて教えてく...
-
エクセルVBAにて =A1=B1とすれ...
-
Excel VBA ダブルクリックで入...
-
時間短縮のために、テキストフ...
-
ワードVBA どの表か知ることは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAなくなるの?
-
VBAでCOPYを繰り返すと、処理が...
-
vba 削除
-
プログラミング
-
Excelのマクロについて教えてく...
-
Excelのマクロについて教えてく...
-
エクセルのVBAコードについて教...
-
久しぶりのプログラミング
-
ユーザーフォームに別シートか...
-
エクセルVBAコードで教えて下さ...
-
VBA 別ブックからコピペしたい...
-
ExcelのVBAコードについて教え...
-
VBAコードについて教えてくださ...
-
vba アクティブシートの名前変...
-
Excelのマクロについて教えてく...
-
エクセルVBA
-
Geogebraの操作方法について
-
マクロの記録を使用したマクロ...
-
Excel(M365) Vlookup/セル反転(...
-
Excel 範囲指定スクショについ...
おすすめ情報