VBA - 对于范围中的每个单元格

时间:2014-04-29 08:00:07

标签: excel vba excel-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

这种方式多次工作,但这次没有 我通常得到的范围大约是细胞数量的两倍。 有谁知道,我应该在这段代码中改变什么?

这里有完整的功能:

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)

修正了它。

1 个答案:

答案 0 :(得分:1)

我猜测并说你的1个单元格的范围不是xlTextValues。您始终可以在调试器中单步调试代码,看看到底发生了什么。