2013-06-05 51 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

相關問題