Vba I';I’我想查看工作表是否存在,并选择工作表,但;参数非可选“;出现
编译错误: 参数不是可选的 然后,按下Ok键后,CheckSheet将突出显示此行:Vba I';I’我想查看工作表是否存在,并选择工作表,但;参数非可选“;出现,vba,excel,Vba,Excel,编译错误: 参数不是可选的 然后,按下Ok键后,CheckSheet将突出显示此行: If CheckSheet() = True Then Worksheet.Select End If Function CheckSheet(ByVal SheetName As String) As Boolean Dim Sheet As Worksheet Dim bReturn As Boolean For Each Sheet In Ac
If CheckSheet() = True Then
Worksheet.Select
End If
Function CheckSheet(ByVal SheetName As String) As Boolean
Dim Sheet As Worksheet
Dim bReturn As Boolean
For Each Sheet In ActiveWorkbook.Sheets
If Sheet.Name = SheetName Then
bReturn = True
Exit For
End If
Next Sheet
CheckSheet = bReturn
End Function
使用参数调用函数,如此行所示:
If CheckSheet() = True Then
Worksheet.Select
End If
请尝试以下方法:
Function CheckSheet(ByVal SheetName As String) As Boolean
编辑:正如@YowE3K所指出的,您的
.Select
语句也需要知道有问题的工作表。已更改工作表。选择至工作表(“您的工作表名称”)。选择缺少的参数是ByVal SheetName As String
。您必须提供要查找的工作表的名称。例如,如果CheckSheet(“Sheet 1”)=True
您的CheckSheet
函数希望向其传递字符串。你不是。这样做,它就会起作用。然后需要修复下一行,除非您有一个调用了工作表的对象。希望您没有,因此它更可能是工作表(“someWorksheetName”)。请选择。我不能只指定一张工作表,因为我正在检查活动工作簿中的所有工作表(如果该工作表存在)。我应该提出什么论点?@HydesYase-你要检查的那张纸的名字是什么?在David的示例中,将其作为参数,而不是“YourSheetName”。@HydesYase-该参数是您要检查的工作表的名称,它不指定您要检查的工作表。事实上,你仍然在所有的纸上循环。
Dim wsName as String
wsName = "YourWorksheetName"
If CheckSheet(wsName) = True Then
Sheets(wsName).Select
End If