• ベストアンサー

VBAの中でユーザー定義関数を使うときに

VBAの中でユーザー定義関数を引数に変数を持たせて使いたいのですが、変数をうまく認識してくれません。 VBAの中でユーザー定義関数を使うにはどうしたらいいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>"=REPE(R[12]C:R[12+(b*c*d)]C,b,c,d)" の部分は文字列ですから、 "=REPE(R[12]C:R[" & 12+(b*c*d) & "]C," & b & "," &… の様にしてやらないといけないと思います

hirahirahira
質問者

お礼

回答ありがとうございます。 おぉ盲点!(バカ)だいぶいいところまでいきました。ただこの変数にRange型の変数を用いたときにアドレスの両側に『'B4';'B100','C4',・・・』というようにシングルクォーテーションが入ってしまうのですが、どうすれば直るでしょうか? よろしくお願いします。

その他の回答 (4)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.5

Range型の変数をString型に変換するときに、 そのようになっているのでは? 無精しないで、もし"B4,B100,C4"という文字列を 渡したいなら、その文字列を作り、 FormulaR1C1 に設定してやることです。 ※設定してREPEという関数が動くかどうかは別問題。

hirahirahira
質問者

お礼

回答ありがとうございました。 またよろしくお願いします。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>シングルクォーテーションが入ってしまうのですが、どうすれば直るでしょうか? 「シングルクォーテーションが入ってしまう状況」というのが再現できませんでした。 再現できる単純な例を補足してください。

hirahirahira
質問者

お礼

雰囲気で.FormulaR1C1を.valueに変えたらシングルクォーテーションが出なくなりました。。。結果的には良かったのですが理由は良く分かりません。。何はともあれ修正できたのでよしとします。 回答ありがとうございました。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

Access かな? Excel かな? 以下は、サンプル。(はずしてたらごめんなさい) Function Fu(Byref b As Integer) As Integer Fu = b End Function ---------------------------------------- Sub Test() If Fu(1) = 1 Then MsgBox "成功!" End if End Sub

hirahirahira
質問者

お礼

回答ありがとうございます。 説明不足で申し訳ありません。エクセルの話です。 今記述しているのは Dim a, b, c, d As Integer ActiveCell.FormulaR1C1 = "=REPE(R[12]C:R[12+(b*c*d)]C,b,c,d)" と書いていてb,c,dを認識してくれません。 REPEというのが自作の関数でマクロの記録で出てきたコードをユーザーフォームで値を変えられるように変数にしてみたという状態です。ワークシート関数のようにapplication.REPE・・・というのもやってみたのですがうまくいきません。 大体状況分かっていただけますでしょうか? よろしくお願いします。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

どんな風に書いてうまく行かないのでしょうか

hirahirahira
質問者

お礼

回答ありがとうございます。現状は上の方への返事の通りです。アドバイスなどあればよろしくお願いします。

関連するQ&A

  • ユーザー定義関数 アドイン

    ユーザー定義関数をアドインにどうやって保存するのでしょか? また、ユーザー定義関数以外のVBAをアドインに保存できますか?

  • 【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

  • VBA ユーザ定義関数の使い方です

    VBA ユーザ定義関数の使い方です Sub test() cells(1,1)=UpperSutegana(cells(1,1)) End sub http://www.relief.jp/itnote/archives/002223.phpのソースをコピー としましたがうまくいきません。なぜでしょうか?

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

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

  • ユーザー定義関数

    自サイトのアクセス解析をしようと SERVER変数を取得してログを解析しようとPHPで組んでみたのですが、 いまいちユーザー定義関数の上手?な使い方がわかりません。 アドバイスを頂けると幸いに思います。 データはcsv(すみませんSQL使えません)ファイルに1アクセス1行 日付,時間,キャリア等々 と記述しています。 ドコモをカウントする場合 function doco( $Key){ $handle = fopen( "LogFile", "r"); $count= 0; while (($data = fgetcsv($handle)) !== FALSE) {  if( mb_eregi( $Key, $data[2])){ $count++; } } echo $count; fclose($handle); } doco( "DoCoMo"); となり、さらに時間別にドコモで0時に来訪したのは何人? といった場合 ifの中にさらに時間の判別のifを記述し 引数の部分を増やしdoco( 引数1,引数2)見たいな感じにしますが そうではなく、 ドコモだけの人数を取り出したい場合も ドコモから12時の人数だけを取り出したい場合も 同じユーザー定義関数を使う方法はありますか? 宜しくお願いします。

    • 締切済み
    • PHP
  • Excelで関数ウィザードの説明欄にユーザー定義関数の説明を表示させるには?

    Excel2000でVBAを用いてあるユーザー定義関数を作成し, それをアドインファイルとして組み込ませました。 ワークシートのセル上で関数ウィザードを開き, このユーザー定義関数を選択するとウィザードの説明欄に 『[ヘルプ]をクリックすると、この関数と引数に関するヘルプトピックが表示されます』 と表示されます。 他の関数では,この『』内にその関数の説明が表示されています。 (例)AND関数の場合『全ての引数がTRUEのとき、論理値TRUEを返します。』 自作したユーザー定義関数の説明を関数ウィザードで表示したいのですが, どうすれば出来るのか教えていただきたくお願いいたします。

  • クラスの関数へユーザー定義型の引数を渡す(VB6.0)

    お世話になります。 クラスモジュール内へ宣言した関数へユーザー定義型(標準モジュール内でPublicで宣言)の引数を渡すとコンパイルエラーとなってしまいます。 ユーザー定義型を宣言した以外の標準モジュールでは同じ関数は動きますが、Formモジュールでは動きません。 標準モジュールにしかユーザー定義型の引数を渡すことは出来ないのでしょうか??

  • 自作関数とユーザー定義関数は同じ意味?

    エクセルやVBAの用語として出てくる 「自作関数」「ユーザー定義関数」は同じ意味ですか?

  • VBAで書いたExcelユーザー定義関数が上手く動きません

    WinXPSP2 Office2003 を使用しています。 プログラムは、本やネットで調べただけの素人です。 具体的には、大量のascファイルにファイル自身の情報をヘッダとして書き込む作業をします。 そのために、ファイルの情報などを返すユーザー定義関数を作り、それを用いた一連の書き込み作業をマクロにして保存し、アドイン化してしまおうと考えました。 作業をマクロにしてアドイン化することはできるようになりましたが、肝心のユーザー定義関数を作るVBAが良くわかりません。 たとえば以下のように、ファイルの作成日時を返すユーザー定義関数を書いて標準モジュールに張ってみたのですが、上手く動きませんでした(具体的には”#VALUE!”になる)。 Function CreationDate() CreationDate = ActiveWorkbook.BuiltinDocumentProperties("Creation Date").Value End Function 次の、ファイルの名前を返すユーザー定義関数は上手く動きました。 Function FileName() As String FileName = Application.ActiveWorkbook.Name End Function なぜ後者が動いて前者が動かないのか、よく理解できません。 どのように変えればよいのか、教えていただけないでしょうか? よろしくお願いします。

  • ユーザー定義関数の作成

    1) 基準年の値をP0,t年後の値をPtとした場合の年あたりの伸び率rは、               1/t      r = (Pt/P0)  - 1  で計算されます。 これを計算するユーザー定義関数のVBAを教えてください。 2) 1からnまでの逆数の和  1+1/2+1/3+・・・+1/n=Σ1/i を計算するユーザー定義関数のVBAを教えてください。

専門家に質問してみよう