我正在尝试将最后一列用于我的范围:WS.range("F2:LastCol" & LastRow).Cells我的子适用于
WS.range("F2:K" & LastRow).Cells但它Last Column是动态的并且不断变化
谢谢
Sub QQ()
Dim LastRow As Long
Dim LastCol As Long
Dim WS As Worksheet
Dim rCell As range
Set WS = Sheets("sheet1")
LastRow = WS.range("F" & WS.Rows.Count).End(xlUp).Row
LastCol = Cells(2, .Columns.Count).End(xlToLeft).Column
'Also tried: LastCol=rgRange.Cells(rgRange.Count).Column
For Each rCell In WS.range("F2:LastCol" & LastRow).Cells
STUFF 'The stuff works for WS.range("F2:K" & LastRow).Cells
End Sub
Run Code Online (Sandbox Code Playgroud)
LastCol 是一个数字,用于指定范围的语法需要一个字母。
您可以找到列号的列字母并将其传递到您的范围定义中,如下所示:
Sub DynamicRange()
Dim startCol As String
Dim startRow As Long
Dim lastRow As Long
Dim lastCol As Long
Dim myCol As String
Dim ws As Worksheet
Dim rng As Range
Dim cell as Range
Set ws = ThisWorkbook.Sheets("Sheet1")
startCol = "F"
startRow = 2
lastRow = ws.Range(startCol & ws.Rows.Count).End(xlUp).Row
lastCol = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column
myCol = GetColumnLetter(lastCol)
Set rng = ws.Range(startCol & startRow & ":" & myCol & lastRow)
For Each cell In rng
' do stuff
Next cell
' check the range we've set
Debug.Print rng.Address
End Sub
Function GetColumnLetter(colNum As Long) As String
Dim vArr
vArr = Split(Cells(1, colNum).Address(True, False), "$")
GetColumnLetter = vArr(0)
End Function
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42021 次 |
| 最近记录: |