在我的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
这种方式多次工作,但这次没有 我通常得到的范围大约是细胞数量的两倍。 有谁知道,我应该在这段代码中改变什么?
这里有完整的功能:
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
我找到了原因:
线
Set portRange = Range("C1").SpecialCells(xlTextValues)
没有选择列,因此它遍历工作表的所有单元格而不仅仅是列。
Set portRange = Range("C1").EntireColumn.SpecialCells(xlTextValues)
修正了它。
答案 0 :(得分:1)
我猜测并说你的1个单元格的范围不是xlTextValues。您始终可以在调试器中单步调试代码,看看到底发生了什么。