アプリ版:「スタンプのみでお礼する」機能のリリースについて

ActiveCell.Offset(0, 2).Range("A1:C1").Select

前記のコードは選択範囲をアクティブセルより相対参照にて指定するものですが、下表にてアクティブセルをA1として、コード内のC1に換えてA1(アクティブセル)の数値によって選択範囲とするセル数を指定するにはどうしたらよいでしょうか?(アクティブセルをA2,A3とした実行結果を2,3行のようにしたいのです)

 A B C D E F
1 3 * * *
2 4 * * * * 
3 2 * *

A 回答 (3件)

アクティブセルをA1として、ご提示の


 ActiveCell.Offset(0, 2).Range("A1:C1").Select
を実行すると、C1:E1が選択されることになり、ご質問文の*の位置にはなりませんね。

その点は、適宜修正いただくとして、
A列がアクティブセルの時に、そのセル値に応じて、選択範囲(幅=列数)を決めたいという意味と解釈しました。
Offset部は質問のコードをそのままとするなら…
 ActiveCell.Offset(0, 2).Resize(1, ActiveCell.Value).Select

ご質問文の例でいくと
1行目はC1:E1、2行目はC2:F2、3行目はC3:D3がそれぞれ選択されることになります。B列から選択したいのであれば、offsetの値を1にすれば宜しいかと・・・
    • good
    • 0
この回答へのお礼

回答ありがとうございます。質問欄の表は投稿時にB列に入れたスペースが反映されなかったものです。読み解いていただきありがとうございました。
ActiveCell.Offset(0, 2).Range(Cells(1, 1), Cells(1, Cells(1, 3).Value)).Select
とするとCells(1, 3).Valueの値が絶対参照のセル値で返るため、コード内での相対参照は?というお尋ねになりました。

お礼日時:2009/08/06 10:33

相対参照ってのは無理かもしれませんがActiveCellの行列を得て指定する方法をとることは出来ます



Dim Row As Long
Dim Col As Long

Row = ActiveCell.Row
Col = ActiveCell.Column

Range(Cells(Row, Col), Cells(Row + 2, Col)).Select
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2009/08/06 10:39

質問の意味が良くわからない。


データ例の表の見方も難しい。
>アクティブセルをA2,A3とした実行結果を2,3行のようにしたいのです)  の部分
何にしろ、範囲はRange(Cells(R1,C1),Cells(R2,C2)).Select
でできる。これを知らないからの質問ではないか。
R1,R2,C1,C2を数値で割り出せば仕舞い。
行のr1=ActiveCell.Rowなど
直下までならr2=r1+1
列のc2も同じ。本質問はこちらか。
易しいことを聞いているのでは。
Offsetでも出来る。
例えばA1に3
Sub test01()
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, Range("A1"))).Select
End Sub
実行すると、B1:D1を範囲指定する。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2009/08/06 10:41

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