0

我曾尝试使用 Google-Fu 进行搜索,但无法完成这项工作:

Sub LoopRange()

Dim rCell As Range
Dim rRng As Range

Set rRng = Sheet1.Range("A1:A6")

For Each rCell In rRng.Rows
    Debug.Print rCell.Address, rCell.Value
Next rCell

End Sub

它确实以以下格式在“立即”窗口中显示地址:$A$1 $A$2 ...

但它不返回任何值、数字或文本。

我在这里做错了什么?

4

2 回答 2

0

您可以再添加两个值,Debug.PrintrCell.Parent.Parent.Name, rCell.Parent.Name显示 rcell 指向的工作簿名称和工作表名称。这将帮助您识别问题。

 Sub LoopRange()

    Dim rCell As Range
    Dim rRng As Range

    Set rRng = Sheet1.Range("A1:A6")

    For Each rCell In rRng.Rows
        Debug.Print rCell.Parent.Parent.Name, rCell.Parent.Name, rCell.Address, rCell.Value
    Next rCell

End Sub

最好指定工作簿,因为可以打开多个工作簿。

 Set rRng = ThisWorkbook.Sheets("sheet1").Range("A1:A6")

高温高压

于 2013-06-07T02:47:19.840 回答
0
Set rRng = Sheet1.Range("A1:A6")

Sheet1这引用了几乎可以肯定与您正在查看的工作表不同的 VBA 对象。这可能是不同的顺序或不同的命名。

尝试其中之一

Set rRng = ActiveSheet.Range("A1:A6")  'This is the current sheet
Set rRng = Sheets(1).Range("A1:A6")  'This is the sheet in index 1 in your workbook, left to right
Set rRng = Sheets("Sheet1").Range("A1:A6") 'This is the sheet named "Sheet1"

取决于您要做什么。

于 2013-06-07T02:21:31.457 回答