【问题标题】:Excel For/Next using Array ElementsExcel For/Next 使用数组元素
【发布时间】:2016-07-29 05:36:49
【问题描述】:

我的最终结果是:我想使用每个选项卡上的特定条件以编程方式选择工作簿中的选项卡。我的标签名称可以更改。

我尝试使用 Sheets(Array(tab1,tab2,tabx)).select 函数,将数组中的项目构建为变量,但在使用时收到下标超出范围错误。 我希望答案比我想象的要容易。 谢谢你。 这是我正在玩的代码:

Sub SelectTabs()

Dim intX As Integer
Dim ws As Worksheet
Dim intArray() As Integer
ReDim intArray(1)

For intX = 6 To 25
    If ((intX / 2) - Int(intX / 2) = 0) And intX > 5 And intX < 25 Then
        Sheets(intX).Select
        ws_name = Sheets(intX).Name
        If (Range("Test" & Range("C29").Value & "_01").Value & Range("Test" & Range("C29").Value & "_02").Value & _
            Range("Test" & Range("C29").Value & "_03").Value & Range("Test" & Range("C29").Value & "_04").Value & _
            Range("Test" & Range("C29").Value & "_05").Value & Range("Test" & Range("C29").Value & "_06").Value) <> "" Then
            ReDim Preserve intArray(UBound(intArray) + 1)
            If Tabs = "" Then
                Tabs = ws_name
            Else
                Tabs = Tabs & Chr(34) & "," & Chr(34) & ws_name
            End If
            intArray(UBound(intArray)) = intX
            'intArray(intX) = ws_name
        End If
    End If
Next intX
Sheets(Array(intArray)).Select

结束子

【问题讨论】:

  • 试试Sheets(intArray).Select

标签: arrays excel vba


【解决方案1】:

我刚刚回答了一个类似的问题Excel macro is acting differently on two computers

基本上,在您选择第一张表后,您可以使用 .Select Replace:=False 选择其余的表

Sheets(1).Select True
Sheets(2).Select False
Sheets(3).Select False
....

Worksheet.Select Method (Excel) - MSDN - Microsoft

【讨论】:

  • 谢谢.. 但它的进展是困难的。 30张中有10张可供选择,只应选择一些。
  • 啊,我刚刚注意到您在检查之前选择了每张纸。您可以将Sheets(Array(intArray)).Select 替换为Sheets( Split( Tabs, """,""" ) ).Select
  • 完美的 Slai,谢谢你...我必须阅读 split 命令。
猜你喜欢
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2019-04-08
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多