2016-11-30 17 views
0

定義它後無法循環遍歷一個範圍我碰到過幾次,總是很煩人。我可以解決它,但我試圖找出是否有原因或更簡單的解決方法。使用range.columns(n)

我定義包含與

Set rngAll = range("A8",cells(usedrange.rows.count,usedrange.columns.count)) 

現在我想通過在該範圍內的第一列各單元看我所有的數據的範圍,我試圖做到這一點:

Set rngUserIDs = rngAll.columns(1) 
For each rngCell in rngUserIDs 
    Do Something 
next rngCell 

當運行的代碼,而不是在rngUserIDs看着每個單獨的小區,rngCell套本身以匹配的rngUserIDs整體。如果rngUserIDs = A8:A1000,而不是從A8開始循環,rngCell立即= A8:A1000,然後退出循環。

如果我設置rngUserIDs任何其他方式,如:

set rngUserIDs = Range("A8","A" & range("A" & rows.count).end(xlup).row) 
For Each rngCell in rngUserIDs 
    Do Something 
next rngCell 

它完美的作品,看着依次在每個細胞中。

是否有這種行爲的原因?有什麼我可以做的嗎?是的,我可以解決它,但由於各種結構性原因,如果我只使用rngAll的第一列,將會很方便。

回答

1

您必須指定Cells屬性,因爲我不完全確定我會認爲最後一個選項是最好的,儘管您想盡可能限制範圍。

Set rngUserIDs = rngAll.columns(1) 
For each rngCell in rngUserIDs.Cells 
    Do Something 
next rngCell 
+0

我正在做的事情之一是尋找該列中的空白單元格。由於數據末尾可能存在空白,而其他列中仍有數據,因此在該列上使用'.end(xlup)'可能會導致誤導結果。 – Werrf

+0

您可以使用Find查找任意列中最後一次使用的行,然後將代碼限制在該範圍內。 – SJR