実行環境は 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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Excel VBA でFunctionプロシジャがどのセルから呼び出されたか知る方法
Visual Basic(VBA)
-
エクセルvba:自己セルの情報取得方法について
Visual Basic(VBA)
-
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
-
4
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
7
自身のセル番地を取得する関数の自作
Visual Basic(VBA)
-
8
押したボタンの位置取得(共通のマクロ)
Excel(エクセル)
-
9
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA指定行削除
-
VBA一覧取得 再投稿
-
VBAコンボボックスで選択した値...
-
エクセルVBAについて
-
【ExcelVBA】値を変更しながら...
-
FileCopy時のエラー
-
VBA 複数のエクセルから一つの...
-
VBA ユーザーフォーム ボタンク...
-
コードを直していただきたいで...
-
2つのマクロでチェックボックス...
-
VBAに詳しい方教えてください。
-
ExcelのVBAコードについて教え...
-
VBA listBoxについて
-
VBA実行後に元のセルに戻りたい
-
Vba 実数および実数タイプの変...
-
エクセルVBAについて
-
現在のブックを閉じないで、マ...
-
Excel VBA 定義されたプロージ...
-
エクセルのマクロについて教え...
-
Excelのマクロについて教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報