私はC#でこの質問に似た解決策を見つけました...以下のリンクを参照してください
c#のExcel.Rangeオブジェクトのワークシート内のすべてのセルを選択する方法
誰かがVBAでこれを行うためのスニペットを持っていますか?私はVBAにあまり詳しくないので、これは役に立ちます。ここに私が持っているものがあります...
「Ctrl + Shiftオーバー矢印、下矢印」を使用してセルの範囲全体を選択することにより、通常データを選択します。これをマクロで実行すると、たとえばA1:Q398247930がコーディングされます。私はそれが必要です
.SetRange Range("A1:whenever I run out of rows and columns")
これは非常に単純で、マクロなしで自分で簡単に行うことができますが、プロセス全体をマクロにしようとしていますが、これはほんの一部です。
Sub sort()
'sort Macro
Range("B2").Select
ActiveWorkbook.Worksheets("Master").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Master").sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Master").sort
.SetRange Range("A1:whenever I run out of rows and columns")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
edit:同じコードを使用したいところもありますが、範囲は「C3:行と列の終わり」です。ドキュメントの最後のセルの場所を取得する方法はVBAにありますか?
ありがとう!
シート上のすべてのセルではなく、A1の現在の領域と周囲のセルを見つけたいと思います。その場合-単に使用します... Range( "A1")。CurrentRegion
単純にcells.select
を使用して、ワークシートでallセルを選択できます。 Range(Cells.Address)
と言って、有効なアドレスを取得できます。
何らかの書式変更を行った、または値を入力した最後のUsed Range
を見つけたい場合は、ActiveSheet.UsedRange
を呼び出してそこから選択できます。役立つことを願っています
すべてのセルを次のようなオブジェクトとして使用できます。
Dim x as Range
Set x = Worksheets("Sheet name").Cells
Xは、ワークシート全体を含む範囲オブジェクトになりました
ここにはいくつかのオプションがあります:
私は個人的に使用範囲を使用し、ほとんどの場合、最後の行と列の方法を見つけます。
UsedRangeプロパティを使用して行う方法は次のとおりです。
Sheets("Sheet_Name").UsedRange.Select
このステートメントは、ワークシートで使用されているすべての範囲を選択します。列と行を削除すると、これがうまく機能しない場合があることに注意してください。
別の方法は、ワークシートで使用されている最後のセルを見つけることです
Dim rngTemp As Range
Set rngTemp = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not rngTemp Is Nothing Then
Range(Cells(1, 1), rngTemp).Select
End If
このコードがしていること:
この投稿にあるようなマクロを記録することをお勧めします。
しかし、必要なワークブックの終わりではなく、データの終わりを探している場合、データの始まりと終わりの間に空のセルがない場合、私はしばしばこのようなものを使用します。
R = 1
Do While Not IsEmpty(Sheets("Sheet1").Cells(R, 1))
R = R + 1
Loop
Range("A5:A" & R).Select 'This will give you a specific selection
データが終了した後、行の番号にR =が残ります。これは列にも使用でき、Cを列表示にした場合は、Cells(C、R).Selectなどを使用できます。
ここに私が使用したものがあり、それはいくつかの完璧さを使用できることを知っていますが、他の人を助けると思います...
''STYLING''
Dim sheet As Range
' Find Number of rows used
Dim Final As Variant
Final = Range("A1").End(xlDown).Row
' Find Last Column
Dim lCol As Long
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
Set sheet = ActiveWorkbook.ActiveSheet.Range("A" & Final & "", Cells(1, lCol ))
With sheet
.Interior.ColorIndex = 1
End With
ワークシートの「.UsedRange」メソッドは、多くの場合、この問題を解決するのに優れていることがわかりました。 「.CurrentRegion」メソッドの通常の動作である切り捨ての問題に苦労しました。 [Worksheets( "Sheet1")。Range( "A1")。CurrentRegion]を使用しても、ワークシートが1つの列で構成され、行に空白が含まれる場合(および空白が必要な場合)、希望する結果が得られません。この場合、「。CurrentRegion」は最初のレコードで切り捨てられます。私は回避策を実装しましたが、最近さらに良いものを見つけました。セット全体を別のシートにコピーできる、または実際の住所(または行と列のみ)を特定できる以下のコードを参照してください。
Sub mytest_GetAllUsedCells_in_Worksheet()
Dim myRange
Set myRange = Worksheets("Sheet1").UsedRange
'Alternative code: set myRange = activesheet.UsedRange
'use msgbox or debug.print to show the address range and counts
MsgBox myRange.Address
MsgBox myRange.Columns.Count
MsgBox myRange.Rows.Count
'Copy the Range of data to another sheet
'Note: contains all the cells with that are non-empty
myRange.Copy (Worksheets("Sheet2").Range("A1"))
'Note: transfers all cells starting at "A1" location.
' You can transfer to another area of the 2nd sheet
' by using an alternate starting location like "C5".
End Sub
データが連続している限り、範囲内のすべてのセルを選択する別の方法は、Range("A1", Range("A1").End(xlDown).End(xlToRight)).Select
を使用することです。
たぶんこれはうまくいくかもしれません:
Sh.Range( "A1"、Sh.Range( "A"&Rows.Count).End(xlUp))
最初の質問を参照して、同じことを検討しています。マクロを記録した結果は、セルA76を選択することから始まります。
Sub find_last_row()
Range("A76").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub
Sub SelectAllCellsInSheet(SheetName As String)
lastCol = Sheets(SheetName).Range("a1").End(xlToRight).Column
Lastrow = Sheets(SheetName).Cells(1, 1).End(xlDown).Row
Sheets(SheetName).Range("A1", Sheets(SheetName).Cells(Lastrow, lastCol)).Select
End Sub
ActiveSheetで使用するには:
Call SelectAllCellsInSheet(ActiveSheet.Name)