VBA – 对于范围内的每个单元格

在我的Excel-VBA项目中,我需要频繁地遍历每个范围的单元格,而且我总是使用这个方法:

Dim xyzRange As Range Dim rCell As Range Set xyzRange = Range("C1").SpecialCells(xlTextValues) For Each rCell in xyzRange 'Do Stuff Next rCell 

这种方式工作多次,但这次并没有。
我通常得到的范围内的细胞数量的两倍左右。 有谁知道,我应该改变这个代码?

这是完整的function:

 Sub checkEndFileForTrunks(ByVal endFileName, ByVal trunkValue) Dim portRange As Range Dim portValue As String Dim portNumber As Integer Workbooks.Open(PATH_OUTPUTFINAL & "\" & endFileName & ".xlsx").Activate Set portRange = Range("C1").SpecialCells(xlTextValues) portRange.Select portNumber = 0 Dim rCell As Range For Each rCell In portRange portNumber = portNumber + 1 'MsgBox (Range("C" & portNumber).Value) I used these two lines for debugging 'Range("C" & portNumber).Select Next rCell Application.DisplayAlerts = False ActiveWorkbook.Close SaveChanges:=True Application.DisplayAlerts = True End Sub 

我find原因:
线

 Set portRange = Range("C1").SpecialCells(xlTextValues) 

没有select列,所以它遍历表的所有单元格而不仅仅是列。

 Set portRange = Range("C1").EntireColumn.SpecialCells(xlTextValues) 

修复。

我猜想,说你的1单元格的范围不是xlTextValues。 您始终可以在debugging器中逐步查看代码,并确切了解发生的情况。