Vba 在工作簿中循环时,无法获取正确的工作表名称
我试图通过检查工作表名称从多个工作簿中收集数据。 但是,当我运行代码检查工作表名称(这是原始数据)时,得到的结果是错误的。代码仅返回Sheet1和Sheet2。 代码如下:Vba 在工作簿中循环时,无法获取正确的工作表名称,vba,excel,Vba,Excel,我试图通过检查工作表名称从多个工作簿中收集数据。 但是,当我运行代码检查工作表名称(这是原始数据)时,得到的结果是错误的。代码仅返回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.Sh
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
发生这种情况是因为您在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
编辑:
您还可以将工作簿名称或索引(或工作簿引用本身)传递给函数,并检查工作簿集合中的特定引用,如果在所有打开的工作簿中循环不是您想要的。您的代码只查看包含代码的工作簿——您的意图是什么?您在函数中引用工作簿?在工作表名称的中间或结尾有一个额外的空间?那以前把我绊倒了。