当我使用 CodeName 属性引用 Excel 工作表时,如何完全限定它们(包括工作簿引用)?
我想防止出现打开两个不同工作簿且两张工作表具有相同 CodeName 的情况。我用ThisWorkbook
因为我想引用运行代码的工作簿。
我想象这样的事情:
Dim tgWs As Worksheet
Set tgWs = ThisWorkbook.WsSummary
tgWs.Cells(1,1).Value = "Test"
where WsSummary
是工作表的代号。
通过代号引用工作表总是意味着该工作表位于ThisWorkbook
,即包含您正在执行的代码的工作簿。
似乎没有直接的方法可以使用其代号来完全限定不同工作簿中的工作表。
此功能将帮助您执行此操作:
Function GetSheetWithCodename(ByVal worksheetCodename As String, Optional wb As Workbook) As Worksheet
Dim iSheet As Long
If wb Is Nothing Then Set wb = ThisWorkbook ' mimics the default behaviour
For iSheet = 1 To wb.Worksheets.Count
If wb.Worksheets(iSheet).CodeName = worksheetCodename Then
Set GetSheetWithCodename = wb.Worksheets(iSheet)
Exit Function
End If
Next iSheet
End Function
用法示例:
GetSheetWithCodename("Sheet1", Workbooks("Book2")).Cells(1, 1) = "Sheet1 in Book2"
GetSheetWithCodename("Sheet1", ActiveWorkbook).Cells(1, 1) = "Sheet1 in ActiveWorkbook"
GetSheetWithCodename("Sheet1").Cells(1, 1) = "Sheet1 in ThisWorkbook"
请注意,最后一行相当于简单地说:
Sheet1.Cells(1, 1) = "Sheet1 in ThisWorkbook"
因为,如上所述,通过代号引用工作表总是意味着该工作表位于ThisWorkbook
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)