• ベストアンサー
  • 暇なときにでも

Excelユーザー定義関数が書き込まれているセルアドレス

Excelのユーザー定義関数で、自分自身が書き込まれているセルのアドレスって取得出来るのでしょうか? 例えば、 Function test(MyString As String) As String test = "入力された文字は、「" & MyString & "」です" End Function とユーザー定義関数を作り A1のセルに =test("てすと") と書くと 入力された文字は、「てすと」ですと出てきます。 そこで、ユーザー定義関数のなかで、ユーザー定義関数を呼び出した式が入力されている(上記の例ですと、「A1」)アドレスを取得する方法ってありますか? どなたか、詳しい方いらっしゃいましたら教えてください。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数3112
  • ありがとう数12

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.3
noname#70958

そのユーザー定義関数が入力されているセルを… ●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 ご参考まで。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • エクセルユーザー定義関数(1)

    エクセル初心者です。 複数のセル範囲(例えばRange("A1:A100"))を入力させ、入力されたセル範囲すべてのセルを3乗した総和を求めるユーザー定義関数は作ること可能でしょうか? Function Y(a As Range) As Variant ここに、aで選択されたセル全てを3乗して総和を求める関数Yを定義したい。 End Function よろしくお願い致します。

  • ユーザー定義関数でシート名を取得したい

    例えば、以下のユーザー定義関数で Public Function Test(A As Range) Test=A.Address End Function AにアクティブシートのセルA1~セルB2を指定すると「$A$1:$B$2」という値が帰ってきますが、 別のシートのセルA1~セルB2を指定しても、「$A$1:$B$2」という値が帰ってきます。 シート名が抜けてしまっているのですが、シート名はどのようにしたら取得できますか?

  • エクセルのユーザー定義関数で(VBA)

    エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。

その他の回答 (3)

  • 回答No.4
  • imogasi
  • ベストアンサー率27% (4561/16326)

こんな関数どういう使い道に使うのですか。回答者を煩わし質問する以上説明が必要と思うが。 エクセル関数で=CELL("address")というのもあるが、これなど質問と関係ある(使えない)かな。

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • mt2008
  • ベストアンサー率52% (885/1701)

セルにセル位置を表示したいだけなのでしょうか? それでしたらユーザ定義関数よりもセル式の方が良いと思いますが? ="入力されたセルは、「R"& ROW() &"C" & COLUMN() &"」です"

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • 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キーを押すとセルのアドレスが表示されますが、式をコピーすると上手く機能しません。あと、再計算ボタンを押してみたのですが、やはり、セルがアクティブになっていないので、上手く機能しません。 何か?上手い方法ってありますか?

関連するQ&A

  • Excelのユーザー定義関数について。

    ネットで調べて「アルファベットのみを半角にする」というユーザー定義関数を発見し使用していますが、 この関数にある特定の文字を変換する条件を追加することはできますでしょうか。 例えば、リンゴ という文字がセル内にある場合、ミカン に変換されて表示されるという条件を下記のユーザー定義関数に加える事ができますか。 もしくは、新たに別のユーザー定義関数を作るしかないのでしょうか。アドバイスよろしくお願いします。m(_ _ )m Function ASC_A(str As String) As String Dim i As Integer For i = 1 To Len(str) If Mid(str, i, 1) Like "[a-zA-Z]" Then Mid(str, i, 1) = StrConv(Mid(str, i, 1), vbNarrow) End If Next ASC_A = str End Function

  • ユーザー定義関数で、選んだセルの下のセルの参照方法

    簡単なユーザー定義関数を作っています。 Function TEST(氏名) TEST = End Function 氏名のセルを選んで、その下のセルの値を参照したいのですが、どのようにしたら良いのでしょうか? OFFSET関数を使いたくも、選んだ氏名のセルをどう使うのかわかりません。 宜しくお願いします。

  • EXCEL VBAのユーザ定義関数でOPTIONALパラメータを使う方法

    Windows2000、Excel2000 です。 ユーザ定義関数を作成しようとしているのですが、 オプショナルパラメータの使い方がわかりません。 オプショナルパラメータをユーザが指定したかどうかは ユーザ定義関数内でどの様にコーディングするのでしょうか? つまり、 Public Function Test( p1 As string , _             Optional p2 As long ) _ As Boolean 上の様な関数の定義をした時、ユーザが p2 のパラメータ を指定したかどうかを判断する方法が知りたいのです。 どなたか教えてください。

  • 関数の作り方教えてください

    A1・B1のセルにそれぞれ"98,-189"","と入力されている場合、A1セルの-189を抜き出すためにC1セルに組み合わせ関数を  =right(A1,Len(A1)-Find(B1,A1))と入力すると-189が 抜き出す事が出来るが、これをユーザー定義として以下の様に関数を作成するとコンパイルエラーがでます。 Function moji_nuki(対象 as string,検索文字 as string) moji_nuki=right(対象,Len(対象)-find(検索文字,対象)) End Function 関数を並べているだけですがsub Functionが定義されていないとエラーメッセージがでるのは何故か、何方か教えてください。ちなみにEXCEL2002です。よろしくお願いします。

  • EXCEL VBA ユーザー定義関数について。

    EXCEL VBA ユーザー定義関数について。 例) FUNCTION Test(a as integer, b as integer,c as integer) as integer とした場合、に添付図のような   =Test(数値1, 数値2, 数値3) のような説明は表示できないのでしょうか? ご存知の方よろしくお願いします。

  • ユーザ定義関数がうまく動きません。

    ユーザ定義関数がうまく動きません。 2月のA1セル値が1になっていたりします。 どこがおかしいのかわかりません。解決方法を教えていただけませんでしょうか。 よろしくお願いします。 【シートの設定】 シート名は1月・・・12月です。 各シートの A1セルは「=sheetname()」 B1セルは「月のチェックシート」 が入っています。 【VBAの設定】 Function SheetName() As String 'Application.Volatile If Len(ActiveSheet.Name) = 3 Then SheetName = Left(ActiveSheet.Name, 2) Else SheetName = Left(ActiveSheet.Name, 1) End If End Function

  • セル色を取得するユーザー関数

    セル色を取得するユーザー定義関数として、 Function CellColor(objCell As Range) As Integer  Application.Volatile  CellColor = objCell.Interior.ColorIndex End Function 上記のコードを標準モジュールに貼り付け、例えばB2セルに「=CellColor(A2)」という計算式を入力すると、B2セルにA2セルの塗りつぶし色のColorIndex値が表示されるようになります。 これをB2セルに例えば「=CellColor()」というように入力すれば B2セルにB2セルの塗りつぶし色のColorIndex値が表示されるようにするには、 どのようなユーザー関数を作ればよいでしょうか? よろしくお願いします。

  • VBAでのユーザ定義関数の返り値

    VBAでのユーザ定義関数の返り値をエクセルのセルに表示させる際、 色を変更して表示するにはどうすれば良いのでしょうか? つきのような関数のerrorの時だけ赤色にしたいのです。 functin test(ss as double) if ss >10 then test=ok else test =error! end if end function

  • 【VBA】ユーザ定義関数が動かない

    【VBA】ユーザ定義関数が動かない 下記のようなプログラムをVBEの標準モジュールに記述して、 ワークシートの適当なセルに「=tc("aa","bb")」と入力してEnterを押した所 セルの表示が「=tc("aa","bb")」となってしまい狙った効果が得られません。 本当は、「aabb」と表示させたいのですが、なぜうまくいかないのでしょうか。 ご教授願います。 ◆関数の仕様  引数1と引数2に入力された文字列を連結して返り値として返す。 ◆コード Function tc(str1 As Range, str2 As Range) As String Dim Str As String Str = str1.Value & str2.Valuett tt = Str End Function

  • Excel VBA ユーザ関数 他ブックセル範囲の引渡し

    Excel VBA の ユーザ関数に、そのユーザ関数を使用するブックとは別のブックのセル範囲を引数で渡したいのですが、可能でしょうか? =test_function('C:\Documents and Settings\hiropon\My Documents\[Book2.xls]Sheet1'!$A$1)みたいな感じで ・・・・ 関数の定義側で オブジェクト変数を用意すればよいのかと思いましたが、だめでした。 Function test_function(myvar As Object) As Vriant  .・・・・・・・ End Function myval.worksheet.name でワークシート名 Sheet1 は 取得できますが パス名とブック名はどうしたらよいのでしょうか? 根本的に違う方法がある? どなたか方法をご教授願います。