- ベストアンサー
VBAの中でユーザー定義関数を使うときに
VBAの中でユーザー定義関数を引数に変数を持たせて使いたいのですが、変数をうまく認識してくれません。 VBAの中でユーザー定義関数を使うにはどうしたらいいのでしょうか? よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>"=REPE(R[12]C:R[12+(b*c*d)]C,b,c,d)" の部分は文字列ですから、 "=REPE(R[12]C:R[" & 12+(b*c*d) & "]C," & b & "," &… の様にしてやらないといけないと思います
その他の回答 (4)
- driverII
- ベストアンサー率27% (248/913)
Range型の変数をString型に変換するときに、 そのようになっているのでは? 無精しないで、もし"B4,B100,C4"という文字列を 渡したいなら、その文字列を作り、 FormulaR1C1 に設定してやることです。 ※設定してREPEという関数が動くかどうかは別問題。
お礼
回答ありがとうございました。 またよろしくお願いします。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>シングルクォーテーションが入ってしまうのですが、どうすれば直るでしょうか? 「シングルクォーテーションが入ってしまう状況」というのが再現できませんでした。 再現できる単純な例を補足してください。
お礼
雰囲気で.FormulaR1C1を.valueに変えたらシングルクォーテーションが出なくなりました。。。結果的には良かったのですが理由は良く分かりません。。何はともあれ修正できたのでよしとします。 回答ありがとうございました。
- driverII
- ベストアンサー率27% (248/913)
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
お礼
回答ありがとうございます。 説明不足で申し訳ありません。エクセルの話です。 今記述しているのは 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)
どんな風に書いてうまく行かないのでしょうか
お礼
回答ありがとうございます。現状は上の方への返事の通りです。アドバイスなどあればよろしくお願いします。
お礼
回答ありがとうございます。 おぉ盲点!(バカ)だいぶいいところまでいきました。ただこの変数にRange型の変数を用いたときにアドレスの両側に『'B4';'B100','C4',・・・』というようにシングルクォーテーションが入ってしまうのですが、どうすれば直るでしょうか? よろしくお願いします。