不寻常的循环宏行为

Chr*_*ord 1 excel vba excel-vba

我有以下代码在我的工作簿中的所有工作表上执行宏,但excludesheets字符串中的那些除外.

奇怪的是,它也忽略了其他纸张,背后没有任何逻辑.

主页,概述和设置在前面然后我有18张我想要执行的表,然后最终排除原始,度量,概述旧和团队.

所有的字符串表都被跳过了,但是我想要的9页也是如此.

有人可以帮忙吗?

Sub Error_Check()

Const excludeSheets As String = "Home Page,Overview,Setup,Original,Metrics,Overview old,Teams"

Dim ws As Worksheet

For Each ws In Sheets
ws.Activate

If IsError(Application.Match(ws.Name, Split(excludeSheets, ","))) Then

'Macro bit

End If


Next ws

    End Sub
Run Code Online (Sandbox Code Playgroud)

Gar*_*eth 5

我认为你的Match语句需要match_type指定参数,因为你把它留空了.

试试这个(注意0):

If IsError(Application.Match(ws.Name, Split(excludeSheets, ","),0)) Then
Run Code Online (Sandbox Code Playgroud)

例如,此参数指定精确值是匹配还是最大.从MS文档中看到:

如果match_type为1,则MATCH查找小于或等于lookup_value的最大值.

如果match_type为0,MATCH将找到与lookup_value完全相等的第一个值.Lookup_array可以按任何顺序排列.

如果match_type为-1,则MATCH将查找大于或等于lookup_value的最小值.

如果省略match_type,则假定为1.