我尝试过使用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 ...
但它不返回任何值,数字或文本。
我在这里做错了什么?
答案 0 :(得分:0)
Set rRng = Sheet1.Range("A1:A6")
这引用了VBA对象Sheet1
,它几乎肯定与您正在查看的工作表不同。这可能是不同的顺序或命名不同。
尝试
之一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"
取决于您的目标。
答案 1 :(得分:0)
您可以向Debug.Print
添加另外两个值,即rCell.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")
HTH