Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在工作簿中循环时,无法获取正确的工作表名称_Vba_Excel - Fatal编程技术网

Vba 在工作簿中循环时,无法获取正确的工作表名称

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

我试图通过检查工作表名称从多个工作簿中收集数据。 但是,当我运行代码检查工作表名称(这是原始数据)时,得到的结果是错误的。代码仅返回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

发生这种情况是因为您在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
编辑:


您还可以将工作簿名称或索引(或工作簿引用本身)传递给函数,并检查工作簿集合中的特定引用,如果在所有打开的工作簿中循环不是您想要的。

您的代码只查看包含代码的工作簿——您的意图是什么?您在函数中引用工作簿?在工作表名称的中间或结尾有一个额外的空间?那以前把我绊倒了。