gpt4 book ai didi

VBA 暗淡作为工作表(不是工作表)

转载 作者:行者123 更新时间:2023-12-01 19:41:25 24 4
gpt4 key购买 nike

好吧,我知道我可以做到这一点:

Dim ws as worksheet
Set ws = thisworkbook.worksheets("Sheet1")

然后用 ws 工作表对象做我喜欢的事情

我还知道我可以Dim wss as worksheets并且使用worksheets("Sheet1")返回工作表对象。那么为什么下面的方法不起作用呢?

Dim wss as worksheets
Dim ws as worksheet
Set wss = thisworkbook.worksheets
Set ws = wss("Sheet1")

我也尝试过:

Dim wss as worksheets
Dim ws as worksheet
Set ws = thisworkbook.wss("Sheet1")

但后者看起来就像我试图重命名/缩短“工作表”,这似乎完全错误。我正在尝试将工作簿的工作表放入一个名为 wss 的工作表对象中。这更多的是试图理解层次结构而不是任何东西,但出于功能目的,我试图让 wss 包含工作簿 x 中的所有工作表,所以我可以只执行 ws = wss(1) 而不是说设置 ws = wb.worksheets(1)

这是否可能,或者我是否误解了工作表/工作表关系?

最佳答案

您必须将 wss 声明为 Sheets对象

Dim wss As Sheets
Dim ws As Worksheet

Set wss = ThisWorkbook.Worksheets
Set ws = wss("Sheet1")

这是因为Worksheets Workbook 对象的属性返回一个 Sheets 集合,即包含工作簿的 WorksheetsCharts 对象的集合

您是否需要仅调用 Workbook Worksheets(而不是 Charts)的集合,如 ws = wss(1) 或喜欢,那么您可以对 Collection 对象采用以下解决方法

Option Explicit

Sub main()
Dim wss As Collection
Dim ws As Worksheet

Set wss = GetWorkSheets
Set ws = wss("Sheet1")
Set ws = wss(1)
End Sub

Function GetWorkSheets() As Collection
Dim wss As New Collection
Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
wss.add ws, ws.Name
Next ws
Set GetWorkSheets = wss
End Function

关于VBA 暗淡作为工作表(不是工作表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39677645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com