セルの範囲(見出し行)を動的に選択できます。行は1ですが、列は1から最後の列までです。「A」は最初の列、「M」は最後の列です。行。最後の列を見つける方法は知っていますが、最初と最後の列を「A」と「M」として入力するために以下の範囲を変更する方法はわかりません。
Range("A1:M1").Select
すべてのヘッダーセルを含む変数範囲を選択する場合:
_Dim sht as WorkSheet
Set sht = This Workbook.Sheets("Data")
'Range(Cells(1,1),Cells(1,Columns.Count).End(xlToLeft)).Select '<<< NOT ROBUST
sht.Range(sht.Cells(1,1),sht.Cells(1,Columns.Count).End(xlToLeft)).Select
_
...その行に他のコンテンツがない限り。
編集:Range(Cells(...), Cells(...))
を使用する場合、ワークシート参照でRange
とCells
の両方を修飾することをお勧めします。
sub selectVar ()
dim x,y as integer
let srange = "A" & x & ":" & "m" & y
range(srange).select
end sub
これが最も簡単な方法だと思います。
したがって、インクリメンターの選択方法によって異なりますが、これは機能するはずです。
Range("A1:" & Cells(1, i).Address).Select
i
は、選択する列を表す変数です(1 = A、2 = Bなど)。代わりに列文字でこれを行いますか?その場合は調整できます:)
最初も動的にしたい場合は、これを試すことができます:
Sub SelectCols()
Dim Col1 As Integer
Dim Col2 As Integer
Col1 = 2
Col2 = 4
Range(Cells(1, Col1), Cells(1, Col2)).Select
End Sub
私はこの方法を最もよく使用し、最初の列から最後の列までを自動的に選択します。ただし、最初の行の最後のセルまたは最初の列の最後のセルが空の場合、このコードは正しく計算されません。セル範囲を動的に選択する他の方法については、 link を確認してください。
Sub DynamicRange()
'Best used when first column has value on last row and first row has a value in the last column
Dim sht As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range
Set sht = Worksheets("Sheet1")
Set StartCell = Range("A1")
'Find Last Row and Column
LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column
'Select Range
sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select
End Sub