人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCEL VBA勉強中の初心者です。

セルに計算式を入力するために、FormulaあるいはFormulaR1C1プロパティを利用する際、その計算式にプロシージャ内で使用している変数を含ませることはできるのでしょうか?

変数を利用する目的は、参照するワークシートやセルを条件によって変動させているからです。

このような場合の変数利用の可能性と、
もしできない場合には、代替案をお教えください。

●質問者: kitatom
●カテゴリ:コンピュータ インターネット
✍キーワード:Excel VBA いるか セル プロ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● llusall
●27ポイント

代替案ということで!

Excel2003で説明します。


■ユーザー定義関数で実現してみる!

1.VisualBasicEditor を起動する

2.標準モジュールを作成する

3.次のコードを記述

    Option Explicit

    Dim a As Integer 'たとえば123が入っているとする

    

    Function Hensu() As Integer

        Hensu = a 'ここにプロシージャ内で使用している変数をセット

    End Function


4.メニューから[挿入]?[関数...]を選択する。

  [関数の挿入]ダイアログが表示されるので、

  [関数の分類]項目から[ユーザー定義]を選択

  作成した関数[Hensu]を選択します。

  セルの数式はこんな感じになります: =Hensu()

  すると、セルに「123」が表示されます。

  このファンクションを利用してプロシージャ内で使用している変数を取得することができます。

  ですので、VBAのコードからFormulaR1C1を使用して数式をセットする場合、

  Worksheets("Sheet1").Range("B1").FormulaR1C1 = "=Hensu() * 2 + 3"

  のように使用すればよいです。

  結果として、プロシージャ内で使用している変数を使用したような形になります。


[参考URL]

http://www.atmarkit.co.jp/fwin2k/win2ktips/437wsfunc/wsfunc.html

◎質問者からの返答

ありがとうございます。たいへん参考になりました。

他の方法も引き続き募集いたします。


2 ● llusall
●27ポイント

再回答ですみません。

ちょっとボケていました。すみません。

Hensu() 関数で、パブリックな変数を返すように、記述しましたが、

ワークシートでこの、Hensu() 関数を参照しても、常に変数の初期値しか取得できないので、駄目でした。

変数の値は保持されないためです。


VBAの変数の内容をワークシートで参照したいのであれば、

変数の内容をワークシートのどこかのセルに書き出しておき、そこを数式で参照するようにすれば良いかと思います。

以上、説明になってますでしょうか?

◎質問者からの返答

なるほど、たしかにおっしゃる方法で実現できそうですね。ただもう少しスマートに解決できるといいのですが。


3 ● gong1971
●60ポイント ベストアンサー
i=2
Range("A1").FormulaR1C1 = "=R1C" & i
Range("A2").Formula = "=B" & i & "*2"

こんな感じでしょうか?

もし具体的にご希望の内容などあれば、コメントにて教えてください。

◎質問者からの返答

ありがとうございます!Formulaによる式代入の際の変数の利用法が理解できました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ