• ベストアンサー

エクセル マクロのFunctionプロシージャについて

エクセルでユーザー定義関数を使う時にセル範囲を任意に指定して参照したいのですがやり方がよく分かりません。 たとえば、以下のマクロを記述して Function test(a,b) test=a+b End Function エクセルのシート上で =test(A1,A2) とすれば、計算結果が出てくると思いますが、この A1、A2と参照していたのを A1:A3 というように参照できるようにマクロを変更したいです。 どなたか教えてください。

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

  • ベストアンサー
  • kbonb
  • ベストアンサー率51% (254/492)
回答No.1

こんにちは  こんな感じでしょうか? Function Test2(Rng As Range) As Double Test2 = Application.WorksheetFunction.Sum(Rng) End Function

参考URL:
http://www2.odn.ne.jp/excel/
kukumumu
質問者

お礼

ありがとうございます。最高です。 それに参考URLまで記述して頂いて。 また疑問点が出てくると思うので、その時は面倒でも教えてくださいね。 Function Test2(Rng As Range) As Double とするんですね。 As Range のところを As Object というのはやってみたんですけど。

関連するQ&A

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

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

  • エクセルのマクロについて

    QNo.3421130で質問させて頂いた件の続きなのですが 入力シート(1)のA1に入力された値を、シート2のB1に表示(つまりB列の同じ行数のセルに表示)するというマクロをお教え頂き、早速実践してみましたが、入力シートA1に入っている値が入力シートA10から算出された値(例:A11に日付の2007/10/18と入っていて、A10にはMONTH関数で10だけを抽出している。そのA10の値10をA1が参照している状態やIF関数で反映された値等)がシート2に表示されません。 また本マクロは入力シート(1)とシート2の同じ行列のセルの表示しか出来ませんが、たとえば入力シート(1)のA2セルの値をシート2のB4に表示(任意で表示位置を変更する方法、シート2の反映セルを下へずらす等)が分りません。 以下、お教え頂いたマクロです。 Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column = 1 Then    Sheets("Sheet2").Cells(Target.Row, "B").Value = Target.Value  End If End Sub 続きの質問であることと、説明が分りにくく大変申し訳ありません。 非常に困っております。よろしくお願いします。

  • excelマクロ subプロシージャに関して

    excelでセルの色を変えるというものをコーディングしました。 選択したセルの隣のセルの値がそれぞれ、○だったら選択したセルの色を変えるプログラムです。 引数なしのため、ユーザー定義関数として定義することができず?、subプロシージャとして定義しているので、 シート内で全ての行に対応させることができず、実行するには一行ずつ、マクロの実行をさせなければ、このプロシージャを使えず、困っています。1行ずつでは作った意味がないので。。。 作ったプロシージャが手元にないので、明日アップしたいと思いますが、質問の意味がわかるかたいましたら、お願いします。

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

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

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

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

  • Excel : 関数内からセルを更新したい

    実行環境は Excel 2000 です。 新規ブックに、 標準モジュールを追加し、 Function Test()   Cells(2, 2) = "OK"   Test = 2 End Function という関数を追加します。 Sheet1 の、 セル「A1」に「10」を入れます。 セル「A2」に「=Test() + A1」 セル「A1」を変更すると、 関数「Test()」が呼び出されます。 このとき、コードのように、B2 のセルに「OK」を 表示させたいのですが、 「アプリケーション定義またはオブジェクト定義のエラーです。(1004)」 のエラーが発生してできません。 マクロやボタンなどのイベントプロシージャでは可能なのですが、上記のようにセルに組み込んだ関数が、 更新により実行された場合はできないのでしょうか? (Cells の指定を Workbooks(1).Worksheets(1).Cells(2, 2) としてもダメでした) (「書式」→「セル」→「保護」→「ロック」はチェックされていません) すみませんが、よろしくお願い致します。

  • エクセルのマクロについて

    お世話になります。エクセル2007のマクロについてですが、「A」というBOOKがありその中の任意のセルをクリックするとハイパーリンクで「B」というBOOKが開くようになっています。 ここで「B」が開いた時点で自動的に「A」を保存しないで終了させたいのですが、マクロの組み方がわかりません。 Sub Sample1() Workbooks("BookA.xlsx").Close End Sub と記述するとBook Aが閉じるのは調べてわかったのですが、ハイパーリンクでBが開いた時点でこのマクロを動かすようにするにはどうしたらいいのでしょうか?何か別の方法があるのでしょうか? 宜しくお願いします。

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

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

  • VBAのマクロをシート内の式で使いたい

    VBAで、マクロの関数をエクセルの式で使うことは可能でしょうか? 引数や戻り値の制約も知りたいです。 引数はExcel側ではセル値B1とかになりますが、VBA側では何か対策でもあるのでしょうか? 'VBA public function test(byval a as integer, byval b as integer) as integer test = a + b end function 'エクセル側 C1セルに以下の式 =test(A1, B1)

  • EXCELのマクロについて

    以下のプロシージャの内容が理解出来ません。 Public Sub test() test.show End Sub Public Function te2(ByVal Val1 As Single, Typ As String) As list シート1の名前.Activate draht=test.suchtest(Val1,Typ) End Function 不明点は以下の通りです。 ・「show」は何の操作か?(関数でしょうか?) ・また、「test」とは何を指すものか?  プロジェクト中には上記ステートメント以外で「test」の記載は  有りません。また、シート名ではなく、セル範囲の名前でも無い  ようです。何か他のものでしょうか? ・As list のlistとは何か?  関数のデータ型を記載する場所にユーザが付けたと思われる名前を記 載して何故マクロが動くのか? ・draht=test.suchtest(Val1,Typ)は何が異なるのか?

専門家に質問してみよう