【发布时间】:2018-04-19 22:54:08
【问题描述】:
我想验证工作表是否存在,如果不存在,则要求用户输入从存在的工作表中选择一个工作表。查看this previous post上的信息,我想出了一个返回布尔值的函数,如果结果为假,我会提示。
我遇到的问题是我输入的自定义工作表名称返回 false,但默认的“Sheet1”...返回 true。查看对象模型,我没有看到 Worksheets.Name.Value 列出的对象模型,查看项目资源管理器,我看到工作表被列为“表 1(宏变量)。
如何引用括号中的工作表名称,以便我的函数能够正常工作,或者如果无法使用工作表名称,是否有更好的解决方案?
这是我的代码
Sub TestBed()
Dim wb As Workbook, test As Boolean, debugStr As String, wsNames() As String
Set wb = ThisWorkbook
Debug.Print "List of sheets in this workbook"
For i = 1 To wb.Worksheets.count
ReDim Preserve wsNames(i - 1)
wsNames(i - 1) = wb.Worksheets(i).Name
debugStr = debugStr & wsNames(i - 1) & " | "
Next i
Debug.Print debugStr
debugStr = ""
For i = LBound(wsNames) To UBound(wsNames)
test = ValidateWorksheetExists(wsNames(i), wb)
debugStr = debugStr & wsNames(i) & " = " & test & " | "
Next i
Debug.Print debugStr
End Sub
Function ValidateWorksheetExists(sName As String, Optional wb As Workbook) As Boolean
If wb Is Nothing Then Set wb = ThisWorkbook
With wb
For i = 1 To .Worksheets.count
If wb.Worksheets(i).Name = sName Then
ValidateWorksheetExists = True
Else
ValidateWorksheetExists = False
End If
Next i
End With
End Function
【问题讨论】:
-
我很困惑,括号中的位是工作表名称。前面的位是代码名称。