範囲を選択する
これらの例では、データを含まない書式設定されたセルを含む使用範囲を選択する方法と、実際のデータを含むセルを含むデータ範囲を選択する方法を示します。
サンプル コードの提供元: Tom Urtis、 Atlas Programming Management
使用される範囲の選択
この例では、Worksheet オブジェクトの UsedRange プロパティと Range オブジェクトの Select メソッドを使用して、データを含まない書式設定されたセルを含む、現在のシートで使用されている範囲を選択する方法を示します。 次に、範囲のアドレスをユーザーに表示します。
Sub SelectUsedRange()
ActiveSheet.UsedRange.Select
MsgBox "The used range address is " & ActiveSheet.UsedRange.Address(0, 0) & ".", 64, "Used range address:"
End Sub
セル A1 から始まるデータ範囲の選択
この例では、現在のシートのセル A1 から始まるデータ範囲を選択し、ユーザーに範囲のアドレスを表示する方法を示します。 データ範囲には、データを含まない書式設定されたセルは含まれません。 この例では、Range オブジェクトのFind メソッドを使用して、データ範囲を取得するために、実際のデータを含む最後の行と最後の列を検索します。
Sub SelectDataRange()
Dim LastRow As Long, LastColumn As Long
LastRow = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastColumn = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Range("A1").Resize(LastRow, LastColumn).Select
MsgBox "The data range address is " & Selection.Address(0, 0) & ".", 64, "Data-containing range address:"
End Sub
開始場所が不明なデータ範囲の選択
この例では、開始位置がわからないときに現在のシートのデータ範囲を選択し、範囲のアドレスをユーザーに表示する方法を示します。 データ範囲には、データを含まない書式設定されたセルは含まれません。 データ範囲を取得するために、この例では Range オブジェクトの Find メソッドを使用して、実際のデータを含む最初と最後の行と列を検索します。
Sub UnknownRange()
If WorksheetFunction.CountA(Cells) = 0 Then
MsgBox "There is no range to be selected.", , "No cells contain any values."
Exit Sub
Else
Dim FirstRow&, FirstCol&, LastRow&, LastCol&
Dim myUsedRange As Range
FirstRow = Cells.Find(What:="*", SearchDirection:=xlNext, SearchOrder:=xlByRows).Row
On Error Resume Next
FirstCol = Cells.Find(What:="*", SearchDirection:=xlNext, SearchOrder:=xlByColumns).Column
If Err.Number <> 0 Then
Err.Clear
MsgBox _
"There are horizontally merged cells on the sheet" & vbCrLf & _
"that should be removed in order to locate the range.", 64, "Please unmerge all cells."
Exit Sub
End If
LastRow = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
LastCol = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
Set myUsedRange = Range(Cells(FirstRow, FirstCol), Cells(LastRow, LastCol))
myUsedRange.Select
MsgBox "The data range on this worksheet is " & myUsedRange.Address(0, 0) & ".", 64, "Range address:"
End If
End Sub
投稿者について
MVP Tom Urtis は、シリコン バレーにある Atlas Programming Management の創業者です。Atlas Programming Management は、Microsoft Office および Excel に関するあらゆるビジネス ソリューションを提供する企業です。 Tom は 25 年以上のビジネス管理および Microsoft Office アプリケーション開発の経験があり、『Holy Macro! It's 2,500 Excel VBA Examples』の 共著者でもあります。
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示