プロが教える店舗&オフィスのセキュリティ対策術

VBAで
セルに関数を数式として代入したいです。

SUMIF関数の第一引数と第三引数は範囲ですが

この範囲に変数を入れたい場合どう書けばいいでしょうか?

例えばcolumn,column2という変数には列番号A,B,C....が渡り、ROW1,ROW2という変数には1,2,3...
などが入る場合

普段B4:B6と書いているものは

column1&ROW1:column2&ROW2などと書くのでしょうか?

調べても書き方が出て来ず困っています。

A 回答 (3件)

最終的にセットしたい数式になるように文字列を作ればいい。


今のあなたは、文字列の作り方で頓挫してます。

さ、頑張って。
    • good
    • 0

>column1&ROW1:column2&ROW2



文字列型と数値型変数に文字列ですからね。

column1 & ROW1 & ":" & column2 & ROW2
    • good
    • 0

こんばんは



回答はすでにでていますので、別の話を、ご参考までに。

VBAでセル位置を扱う場合、どちらかと言えば列は Column() 等で示される列番号(=数値)を用いることが多いように思います。(計算しやすいこともありますので)
ですので、あまりご質問のようなことが必要になるケースが発生する例を感じられません。

>調べても書き方が出て来ず困っています。
あまりそのような方法で処理をする発想がないので、例が少ないのではないかと推測します。


例えば、ご提示の場合であれば、ご質問のセル範囲は、
 Range( Cells(row1, column1), Cells(row2, column2) )
などと記述することができます。
少し長いかも知れませんけれど、視認性は良いのではないでしょうか。

場合によっては、
 Cells(row1, column1).Resize( row2-row1+1, column2-column1+1)
のような記述の方が便利な場合もあります。
(こちらの場合は、column1,column2は数値である必要があります。)
また、実際には、上例のように変数で計算するというよりは、変数には最初からそのような値を取得しておくことになると思います。
その場合には、
 Cells(row1, column1).Resize(RowsNum, ColumnsNum)
のような感じの記述になるでしょう。


実際に、何をなさりたくてのご質問なのかは、わかりませんけれど・・・
セルに関数を設定したくて、A1形式での指定が必要になるとしても、上記のセル範囲のAddressを取得すれば、そのままA1形式のセル範囲(=文字列)に変換することが可能です。
関数を設定するのではなくて、結果を計算できれば良いだけであるなら、Worksheet.Function を利用することで、そのままRangeオブジェクトを(Addressに変換することなく)引数として指定することも可能です。

少し、発想を変えて、セルの位置などの指定方法を考えてみると、後々、いろいろな処理を行う上で便利になるかもしれません。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!