- ベストアンサー
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月と増えたりするので。 何か方法があればご指導お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
間違えました 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 でした(・・;)
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
下記を参考に 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)
こんなのも、、、 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)
'行取得 x = ActiveSheet.UsedRange.Rows.Count - 1 '列取得 y = ActiveSheet.UsedRange.Columns.Count - 1 'レンジ設定 Set r = Range(Cells(2, 2), Cells(x, y)) '結果 r.Select
では変数を持たしてやりましょう 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
補足
すいません。書き忘れました。 質問に書いた表はすべてデータが入っていますが、 データがブランクの場合もあります。 ブランクセルがあった場合CTRL+↓などではちゃんと選択されない事がさっきわかりました。 xldownではだめでしょうか・・・?