[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Vbaで特定の範囲を選択(途中に空白あり)』(トコヤマ)
A列 B列 C列 D列 E列 1 今月の売上 2 500 800 200 3 600 300 900 4 700 400 600 5 900
A2(固定)を起点とし、空白セルを含めてデータが入っているすべてのセルを範囲選択する方法はありますか。
この例ではE5が最終セルですが、データが縦横に増えていくため範囲は常に変わります。
worksheet(1).usedrange.selectだとA1から選択されてしまうため、A2から選択する方法はありますか?
< 使用 Excel:Excel2019、使用 OS:Windows10 >
UsedRangeよりCurrentRegionを使用した方が よいのでは? With Range("A1").CurrentRegion .Offset(1).Resize(.Rows.Count - 1).Select End With (はまちゃん) 2020/12/23(水) 11:00
空白の位置によって正しくない範囲を選択する可能性もあるので 範囲をテーブルにして Range("A1").ListObject.DataBodyRange 方がよいのかも?
(はまちゃん) 2020/12/23(水) 11:07
Sub さんぷる() With ActiveSheet Intersect(.Rows("2:" & .Rows.Count), .UsedRange).Select End With End Sub
(もこな2) 2020/12/23(水) 11:18
Sub さんぷる2() With ActiveSheet .Range("A2", .Cells.SpecialCells(xlCellTypeLastCell)).Select End With End Sub
真面目にやるなら各列の最終行を調べて最大値を採用するとか。
Sub さんぷる3() Dim i As Long, 配列(4) As Long, 最終行 As Long
With ActiveSheet For i = 1 To 5 配列(i - 1) = .Cells(.Rows.Count, i).End(xlUp).Row Next i
最終行 = WorksheetFunction.Max(配列) If 最終行 > 1 Then .Range("A2:E" & 最終行).Select End With End Sub
(もこな2) 2020/12/23(水) 11:56
以下に差し替えで。
Sub さんぷる3() Dim i As Long, 配列() As Long, 最終行 As Long, 最終列 As Long
With ActiveSheet 最終列 = .UsedRange.Columns.Count ReDim 配列(最終列 - 1)
For i = 1 To 最終列 配列(i - 1) = .Cells(.Rows.Count, i).End(xlUp).Row Next i
最終行 = WorksheetFunction.Max(配列) If 最終行 > 1 Then .Range("A2", .Cells(最終行, 最終列)).Select End With End Sub
(もこな2) 2020/12/23(水) 12:08
Sub test()
Worksheets(1).Select Range("A1").Select '例1 With Worksheets(1).UsedRange .Resize(.Rows.Count - 1).Offset(1).Select End With
Range("A1").Select '例2 With Worksheets(1).UsedRange Intersect(.Cells, .Offset(1)).Select End With
Range("A1").Select '例3 With Worksheets(1).UsedRange .Range(.Range("A2"), .Cells(.Count)).Select End With End Sub
ステップインで1行づつ実行して確認してみてください。
※実務ではセルをSelectすることは基本的に必要ない場合がほとんどなので、
Selectすることは無駄です。
Selectしないような書き方を覚えてください。
(まっつわん) 2020/12/24(木) 08:53
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.