- ベストアンサー
Excelユーザー定義関数が書き込まれているセルアドレス
Excelのユーザー定義関数で、自分自身が書き込まれているセルのアドレスって取得出来るのでしょうか? 例えば、 Function test(MyString As String) As String test = "入力された文字は、「" & MyString & "」です" End Function とユーザー定義関数を作り A1のセルに =test("てすと") と書くと 入力された文字は、「てすと」ですと出てきます。 そこで、ユーザー定義関数のなかで、ユーザー定義関数を呼び出した式が入力されている(上記の例ですと、「A1」)アドレスを取得する方法ってありますか? どなたか、詳しい方いらっしゃいましたら教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
そのユーザー定義関数が入力されているセルを… ●ThisCellプロパティで取得する Function test() MyString = Application.ThisCell.Address(False, False, xlA1) test = "入力されているセルは、" & MyString & "です" End Function ●Callerプロパティで取得する Function test2() MyString = Application.Caller.Address(False, False, xlA1) test2 = "入力されているセルは、" & MyString & "です" End Function ご参考まで。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
こんな関数どういう使い道に使うのですか。回答者を煩わし質問する以上説明が必要と思うが。 エクセル関数で=CELL("address")というのもあるが、これなど質問と関係ある(使えない)かな。
- mt2008
- ベストアンサー率52% (885/1701)
セルにセル位置を表示したいだけなのでしょうか? それでしたらユーザ定義関数よりもセル式の方が良いと思いますが? ="入力されたセルは、「R"& ROW() &"C" & COLUMN() &"」です"
- mt2008
- ベストアンサー率52% (885/1701)
R1C1形式 でもいいですか? Function test(MyString As String) As String Dim nRow, nCol As Integer nRow = Application.ActiveCell.Row nCol = Application.ActiveCell.Column test = "入力されたセルは、「R" & nRow & "C" & nCol & "」です" End Function
補足
早速の回答有り難うございます 試してみたのですが、確かに数式をセルに入れて、Enterキーを押すとセルのアドレスが表示されますが、式をコピーすると上手く機能しません。あと、再計算ボタンを押してみたのですが、やはり、セルがアクティブになっていないので、上手く機能しません。 何か?上手い方法ってありますか?