我正在尝试通过检查工作表名称来从多个工作簿中收集数据。 但是,当我运行我的代码来检查工作表名称(这是原始数据)时,我得到一个错误的结果。代码只返回Sheet1和Sheet2。 以下是代码:
Function WorksheetRAWExists(wsName As String) As Boolean
Dim ws As Worksheet
Dim ret As Boolean
ret = False
wsName = UCase(wsName)
For Each ws In ThisWorkbook.Sheets
If UCase(ws.Name) = "RAW DATA" Then
ret = True
Exit For
End If
Next
WorksheetRAWExists = ret
End Function
答案 0 :(得分:2)
这是因为您在for-each中循环遍历“ThisWorkbook”,它始终检查您正在运行VBA代码的工作簿中的工作表集合。
如果您希望遍历所有打开的工作簿中的所有工作表,那么您可以执行以下操作:
Sub test()
Dim wbk As Workbook, ws As Worksheet
For Each wbk In Workbooks
For Each ws In wbk.Worksheets
MsgBox ws.Name
Next ws
Next wbk
End Sub
编辑:
您还可以将工作簿名称或索引(或工作簿引用本身)传递给您的函数,并检查工作簿集合中的特定引用,以防在所有打开的工作簿中循环不是您想要的。