• ベストアンサー

VBA、セルの選択範囲について

下記のような表を用意し、   A   B  C  D  E 1    1月 2月 3月 合計 2 Aさん 1  2  3  6 3 Bさん 1  2  3  6 4 Cさん 1  2  3  6 5 合 計 3  6  9  18 セルの範囲選択を指定し別シートの任意のセルへコピーをVBAで行いたいのですが、 Aさん、Bさん、Cさんという範囲を選択する為に、合計という文字は含みたくないので、 Range("A2").Select Range(Selection, Selection.End(xlDown).Offset(-1)).Select と記載し、これは出来ました。 同様に、 1月、2月、3月という範囲も同様にxlToRightを使用し選択出来ました。 Range("B1").Select Range(Selection.End(xlToRight).Offset(, -1), Selection).Select しかし、B2:D4の範囲の指定の仕方がわかりませんでした。 データのレコード数は一定ではないのでB2:D4というように範囲を指定する事は出来ません。 そのときに応じてDさん、Eさんと増えたり、4月、5月と増えたりするので。 何か方法があればご指導お願いします。

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

  • ベストアンサー
noname#8185
noname#8185
回答No.3

間違えました dim gyo as integer dim retu as integer retu=Range("B1").end(xltoright).column-1 gyo=Range("B1").end(xldown).row-1 set adr=cells(gyo,retu) range("B2:"&adr).select でした(・・;)

take2003
質問者

補足

すいません。書き忘れました。 質問に書いた表はすべてデータが入っていますが、 データがブランクの場合もあります。 ブランクセルがあった場合CTRL+↓などではちゃんと選択されない事がさっきわかりました。 xldownではだめでしょうか・・・?

その他の回答 (4)

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

下記を参考に Sub test02() Dim c Dim m m = "合計" Sheets("sheet3").Activate c = Application.WorksheetFunction. _ Match(m, ActiveSheet.Range("A1:G1"), 0) r = Application.WorksheetFunction. _ Match(m, ActiveSheet.Range("A1:A30"), 0) cc = Chr(64 + c - 1) Sheets("sheet3").Range("b2:" & cc & r - 1).Select End Sub で合計のある列と行が判ります。Gと30は多めにしてください。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

こんなのも、、、 Sub test()  With Range("A1").CurrentRegion   .Resize(.Rows.Count - 2, .Columns.Count - 1).Offset(1, 0).Select  End With End Sub

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.2

'行取得 x = ActiveSheet.UsedRange.Rows.Count - 1 '列取得 y = ActiveSheet.UsedRange.Columns.Count - 1 'レンジ設定 Set r = Range(Cells(2, 2), Cells(x, y)) '結果 r.Select

noname#8185
noname#8185
回答No.1

では変数を持たしてやりましょう dim gyo as integer dim retu as integer retu=Range("B1").end(xltoright)-1 gyo=Range("B1").end(xldown)-1 set adr=cells(gyo,retu) range("B2:"&adr).select

関連するQ&A