【发布时间】:2019-11-07 18:56:55
【问题描述】:
我想从特定工作簿中获取工作表对象,如下所示:
Set ws = Application.Workbooks("WorkBookName.xlsm").Worksheets("sheet1")
但是,我想使用工作表的 CodeName,因为工作表的名称可以更改。例如:
Set ws = Application.Workbooks("WorkBookName.xlsm").Sheet1
现在,我知道这不起作用,因为 Sheet1 是 VBA 编辑器为方便而创建的全局变量。
我也知道我可以使用索引(即 Worksheets(1))来获取工作表对象,但是如果有人移动工作簿中的工作表,函数将无法正常工作。
所以我的问题是:如何从特定工作簿(不是“ThisWorkbook”)中获取工作表对象并使用 CodeName 将其存储在变量中?
这是一个示例 sn-p(我对在 stackoverflow.com 上发帖很陌生):
Public Sub Main()
' Test Class
Dim test As New StoreContestModel
test.StoreID = "28"
test.StoreName = "Kippersville"
' Other workbook
Dim wb As Workbook
Dim ws As Worksheet
Dim r As Range
Dim v As String
' Showing test StoreID in other workbook. Code is broken up because as one-line it did not work.
Set wb = Application.Workbooks("Contest.xlsm")
Set ws = Application.Workbooks("Contest.xlsm").Sheet1 ' wb.Sheet1 didn't work
Set r = ws.Range("N2")
r.value = test.StoreID
End Sub
我希望 StoreID 显示在另一个工作簿中指定的单元格中。但是,我收到此错误:
运行时错误“438”:
对象不支持该属性或方法
【问题讨论】: