有关For Each In表达式的快速问题:
我将此行用于同一文件中的所有行,但工作表不同:
For Each c In tarRng
count = count + 1
Debug.Print "c.Value: "; c.Value
Debug.Print "cAdd: "; c.Address
Debug.Print "count"; count
Next
tarRng定义为B列的所有行,它们可以完美工作,它循环遍历所有行,并输出该行中的值以及调试屏幕中每个值的地址。这里有一个后面的功能,我刚才在这里省略了。
现在是一个问题:我想在同一个文件夹中获得另一个工作簿的B列,但是当我这样定义它时(这里是固定范围,因为我只是想测试它)。
For Each c In Workbooks("Nvm_Configuration_ASW.xlsm").Worksheets("Tabelle2").Range("B3:B271")
它只显示一次值为1的计数,甚至不输出c.Value或c.Address。我确信文件和工作表的表达式是正确的,因为我尝试使用与文件名相同的文件来工作,并且可以正常工作。
谢谢, Mathias
答案 0 :(得分:0)
如果未打开工作簿,则必须使用Workbooks.Open()
打开它:
Public Sub TestMe()
Dim myCell As Range
Dim wks As Workbook
Set wks = Workbooks.Open("C:\Users\Nvm_Configuration_ASW.xlsm")
For Each myCell In wks.Worksheets(1).Range("A1:A5")
Debug.Print myCell
Next
End Sub
如果已打开,则您的代码应该可以运行,但应在同一Excel实例中打开它。
默认情况下,除非您没有其他技巧,否则它将在同一实例中打开: