arrays - Excel VBA - 创建工作表名称数组

标签 arrays excel vba

我正在尝试创建一个包含所有工作表名称的数组,从事件工作簿中的第四个工作表开始。当我尝试重新调整数组尺寸时,我在第 4 行遇到错误。我错过了什么?目前有 6 个工作表,第 3 个是隐藏的(以防发生任何变化)。

Dim i As Integer
Dim sheetsToSkip() As Variant
For i = 4 To Sheets.Count
    ReDim Preserve sheetsToSkip(UBound(sheetsToSkip) + 1)
    sheetsToSkip(UBound(sheetsToSkip)) = Sheets(i).Name
Next i

最佳答案

@BigBen 走在正确的轨道上。您只需 ReDim 一次:

Public Function ListWorkssheets()

    Dim SheetsToSkip()  As String
    Dim Count           As Integer
    Dim Index           As Integer
    
    Count = ThisWorkbook.Worksheets.Count
    ReDim SheetsToSkip(1 To Count)
    
    For Index = 1 To Count
        SheetsToSkip(Index) = ThisWorkbook.Worksheets((Index + 3 - 1) Mod Count + 1).Name
    Next
    
    ' Verify.
    For Index = LBound(SheetsToSkip) To UBound(SheetsToSkip)
        Debug.Print Index, SheetsToSkip(Index)
    Next

End Function

关于arrays - Excel VBA - 创建工作表名称数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63125171/

相关文章:

java - 删除字符串数组中具有相同字符的字符串

excel - 如何克服Excel中超链接的限制?

Excel VBA 循环检查重复项不起作用...有时

excel - Microsoft Excel - 如何将行从一张工作表复制到另一张按值过滤的工作表

vb.net - 代码无响应

javascript - Vue 列表项在状态更改时不会重新渲染

java - 为某个数组元素赋值

c - 为什么 printf 打印一个未作为参数传递的变量?

c# - 使用 C# 创建新的 Excel 函数(用户定义函数)

VBA 循环突出显示不一致