Runtime error 449 Argument not optional报错及代码修复求助
搞定VBA里的Runtime Error 449问题
嘿,我来帮你解决这个报错!首先得说,你代码里的Worksheets(i).Names用错了——这个属性是用来获取工作表里的命名区域集合(比如你定义的那些单元格名称),而不是工作表本身的名称。你要判断的是工作表名称是否匹配Var_Name,得用单数的Worksheets(i).Name,这才是获取单个工作表名称的正确属性。
修复后的完整代码
' 先声明所有变量(好习惯,避免变体类型坑) Dim i As Integer Dim Exists As Boolean Dim Exists_Counter As Integer Dim Var_Name As String ' 根据你的实际场景调整类型,确保是字符串 ' 初始化变量,避免残留值影响结果 Exists = False Exists_Counter = 0 For i = 1 To Worksheets.Count ' 用Worksheets(i).Name获取工作表名称 If Worksheets(i).Name = Var_Name Then Exists = True Exists_Counter = Exists_Counter + 1 End If Next i
几个额外的小提醒
- 一定要声明
Var_Name的类型!如果它是未声明的变体类型,可能会因为类型不匹配触发类似错误,最好明确设为String。 - VBA默认字符串区分大小写,如果需要忽略大小写匹配,可以改成:
If UCase(Worksheets(i).Name) = UCase(Var_Name) Then - 循环变量
i也记得声明,别用默认的变体类型,用Integer或者Long都可以。
内容的提问来源于stack exchange,提问作者O.r.A.j.C
相关产品推荐
相关产品推荐

