• ベストアンサー

エクセルVBA・一定の条件でセルを選択したい

エクセルVBA・一定の条件でセルを選択したい 添付した画像で、毎日、社員番号等が入力されます。 D列の内線番号は空白の場合もありますがA、B、C列は必ず入力されます。 添付画像だと「A1:D5」という具合に選択したいのです。 考え方としては、A列の*行に入力された場合は、「A1:D*」を選択するという具合になるかと思います。 私の目的は、セル範囲を選択したあと、並べ替えたいと考えています。 この並べ替えは自動記録でできそうです。 よろしくお願いします。

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

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

もし、勉強のためなら、こういう書き方があります。 それぞれが、若干の違いがあります。VBAは、なるべく同じパターンを書かないようにします。 また、必ず、親オブジェクトを意識しないといけませんね。Rangeも、Cellsは、オブジェクトではなくて、プロパティです。 Sub Test1() With ActiveSheet  .Range("A1", .Cells(Rows.Count, 1).End(xlUp).Offset(, 3)).Select End With End Sub Sub Test12() With ActiveSheet  .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Resize(, 4).Select End With End Sub Sub Test13() With ActiveSheet  .Range("A1").CurrentRegion.Resize(, 4).Select End With End Sub

taka1012
質問者

お礼

ご回答ありがとうございます。 今後のため、ご提示いただいた次の3つについて、よく調べてみます。 With Offset Resize

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • soixante
  • ベストアンサー率32% (401/1245)
回答No.2

シンプルに、 Cells(1,1).CurrentRegion.Select でいいと思いますよ。 なお、選択しなくても以下のように、直接 Sort を掛けてしまう方法もあります。 Sub Narabikae() Cells(1, 1).CurrentRegion.Sort _     Key1:=Cells(1, 3), _     Order1:=xlDescending, _     Header:=xlNo, _     OrderCustom:=1, _     MatchCase:=False, _     Orientation:=xlTopToBottom, _     SortMethod:=xlPinYin End Sub

taka1012
質問者

お礼

ご回答ありがとうございます。 >Cells(1,1).CurrentRegion. このコードも覚えておくと、色々と便利そうですね。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! A1セルから入力されている最終行のD列すべてを選択するだけで良いわけですかね? もしそうであれば一例です。 ごく単純に・・・ Sub test() Dim i As Long i = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(1, 1), Cells(i, 4)).Select End Sub ではどうでしょうか?m(__)m

taka1012
質問者

お礼

早速のご回答ありがとうございます。 ご教示いただいたコードで無事、解決しました。 >Cells(Rows.Count, 1).End(xlUp).Row これを覚えると色々と便利そうですね。 たいへん、勉強になりました。

すると、全ての回答が全文表示されます。

関連するQ&A