• ベストアンサー

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