• ベストアンサー

エクセルVBAで範囲選択

多分初歩的な記述方法だと思うのですが、教えてください。 たとえば、A1:C5をRange("TEST")とした場合、A2:C6を選択するのは Range("TEST").Offset(1,0).Selectですが、 A2:C5を選択するのはどう記述するのでしょうか? Range("A2:C5").Select以外の方法をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

merlionXXさん、こんにちは。 >A2:C5を選択するのはどう記述するのでしょうか? >Range("A2:C5").Select以外の方法をお願いします。 うーん、もう十分にコードはごらんなっていたと思いましたが(^^; 私のよく使う書き方です。 'Sheet1.Range("A1:A5").Name = "TEST" Range("TEST").Offset(1, 0).Resize(Range("TEST").Rows.Count - 1).Select 最終行が分るとは限らないから、Rows.Countを使います。 また、省略すれば、以下のようになりますし、 Range("TEST").Offset(1, 0).Resize(4).Select まだ、他にも、こんな方法があります。 With Range("TEST")  Range(.Cells(2), .Cells(.Count)).Select End With ただ、最初のコードのように、あまり、VBAのRangeオブジェクトのNameで範囲を取る方法はしませんね。

merlionXX
質問者

お礼

Wendy02 さん、いつもお世話様です。 こんなのも知らなくて恥ずかしいです。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

A1:C5に確認しやすいように、1セルずつに、1から15の数を入れておく。 Sub test03() Dim cl As Range Range("A1:c5").Name = "TEST" Range("TEST").Select 'For Each cl In Range("TEST") ' MsgBox cl ' Next '---- Range("TEST").Offset(1, 1).Select MsgBox Range("TEST")(2) MsgBox Range("Test").Count n = Range("Test").Count Range(Range("TEST")(2), Range("TEST")(n)).Select End Sub はじめのメセージボックスは2、 次のメッセージボックスは15 となり、最後にA2:C5をセレクトするようです。 でも一般的なやり方だとは思いませんが。 セル範囲指定は、左上隅と右下隅を指定するというところから、ヒントにして思いつき。質問に関係のないコードがありますが、無視してください。

merlionXX
質問者

お礼

ありがとうございます。 べんきょうになりました。

関連するQ&A