You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Excel VBA函数返回工作表数组?求函数类型定义指导

VBA函数返回Worksheet数组的类型定义修正

你的问题核心是函数返回类型与实际返回值不匹配——当前函数声明返回单个Worksheet对象,但你需要返回的是Worksheet类型的数组。以下是修正方案:

关键修正点

  1. 函数返回类型声明:将As Worksheet改为As Worksheet(),明确返回Worksheet数组。
  2. 数组赋值方式:单个工作表对象赋值给数组元素时用Set,但整个数组赋值给函数名时直接用=,不需要Set。

修正后的完整代码示例

Public Function fctListeFeuillesArray() As Worksheet()
    Dim ar1() As Worksheet
    Dim targetWs As Worksheet
    Dim index As Integer
    
    ' 示例逻辑:收集所有可见工作表,可替换为你的筛选逻辑
    index = 0
    ' 先初始化数组大小,后续可根据实际数量调整
    ReDim ar1(0 To ThisWorkbook.Sheets.Count - 1)
    
    For Each targetWs In ThisWorkbook.Sheets
        ' 这里可以加筛选条件,比如只包含特定名称的工作表
        ' If targetWs.Name Like "Data*" Then
            Set ar1(index) = targetWs
            index = index + 1
        ' End If
    Next targetWs
    
    ' 调整数组大小以匹配实际收集到的工作表数量
    If index > 0 Then
        ReDim Preserve ar1(0 To index - 1)
    Else
        ' 处理没有符合条件的工作表的情况,返回空数组
        ReDim ar1(0 To -1)
    End If
    
    ' 直接将数组赋值给函数
    fctListeFeuillesArray = ar1
End Function

使用说明

修正后即可直接执行Sheets(fctListeFeuillesArray()).Select,函数返回的Worksheet数组会被Sheets集合识别,从而选中所有目标工作表。

内容的提问来源于stack exchange,提问作者user2151292

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:00:03