2013-06-05 49 views
3

我试图用最后一栏为我的范围:WS.range("F2:LastCol" & LastRow).Cells我的子作品使用最后一列的范围(F:LastColumn)

WS.range("F2:K" & LastRow).CellsLast 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 

回答

3

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 
+0

你好饮食负责人,不知道如何将你的代码应用到我的Sub。我可以在'Set rng = ws.Range(startCol&startRow&“:”&myCol&lastRow)''之后添加我的子集的'innerds',或者我可以使用'rng = ws.Range(startCol&startRow&“: &myCol&lastRow)'在我的sud。谢谢 – xyz

+0

当你定义一个范围时,你总是需要'set'关键字。我不确定我完全理解你的问题。我编辑了我的答案,包括你的循环。这有帮助吗? –

+0

是的,这是回答我的问题,我会尝试使用它,我会回报。谢谢 – xyz

1

请尝试定义你的循环是这样的:

For Each rCell In WS.range(ws.Range("F2"), Ws.Cells(LastRow, LastCol)).Cells 

,或者它可以走更短的方式与此解决方案(如果WSActivesheet):

For Each rCell In WS.range("F2", Cells(LastRow, LastCol)).Cells 
+0

+1良好的菜鸟问题和适当的答案! – 2013-06-05 13:34:32

+0

你好KazJaw,我得到'无效或不合格的参考文献'和'LastCol = Cells(2,.Columns.Count).End(xlToLeft).Column'中的第一个'.colunm'以蓝色突出显示 – xyz

+1

oughta是'ws。 columns.count'或使用with语句。顺便说一句KazJaw的答案中的第一个语法是最可靠的 - 后者不会在工作表模块中工作,除非该工作表碰巧是sheet1 – JosieP

相关问题