【问题标题】:Convert For Each to an Array in VBA在 VBA 中将 For Each 转换为数组
【发布时间】:2015-12-14 15:16:12
【问题描述】:

我有下面的代码,但我知道可以通过将数据放入一个我不知道如何操作的数组来加快它的速度。我会很感激任何帮助。 提前致谢

       For Each rngReportCell In rngReport

                If rngReportCell = "" Then Exit For


                If VBA.UCase(rngReportCell.Offset(0, 1).Value) = "X" Then
                        wkbSOR.Sheets("Dashboard").range("SSSFlag").Value = True
                    Else
                        wkbSOR.Sheets("Dashboard").range("SSSFlag").Value = False
                End If

                If rngRetrieveCell.Offset(0, 1).Value <> "" Then _
                     wkbSOR.Sheets(rngRetrieveCell.Value).range(rngRetrieveCell.Offset(0, 1).Value) _
                     = "'" & rngReportCell.Value


                If rngReportCell.Offset(0, 2) <> "" And gRetrieveCell.Offset(0, 2).Value <> "" Then _
                wkbSOR.Sheets(rngRetrieveCell.Value).range(rngRetrieveCell.Offset(0, 2).Value) _
                = "'" & rngReportCell.Offset(0, 2).Value

                TotalRows = range("Base_" & rngRetrieveCell).Rows.count
                TotalCols = range("Base_" & rngRetrieveCell).Columns.count

                'Copies values using range.value = range.value
                range("A7").Offset(range("A7").CurrentRegion.Rows.count, 0).Resize(TotalRows, TotalCols).Value = _
                wkbSOR.Sheets(rngRetrieveCell.Value).range("Base_" & rngRetrieveCell).Value

        Next rngReportCell 'Store/Hyperion code

【问题讨论】:

    标签: arrays vba for-loop foreach each


    【解决方案1】:

    也许这会对您有所帮助: https://stackoverflow.com/questions/17859531/excel-vba-populate-array-with-range-from-specific-sheet

    但本质上,您只想将所需范围导入二维数组并照此进行迭代(例如):

        'Instantiate variant array
        Dim arrValues() As Variant
        arrValues = Sheet1.Range("A1:D10")
    
        'Iterate through rows
        For i = 1 To 10
            'Iterate through columns
            For j = 1 To 10
                'your code here
            Next
        Next
    

    【讨论】:

    • 您可能想要使用 0 到 9。(因为它们是基于 0 的数组 - 对吧?)
    • 当您使用此方法时,数组从索引 1 开始填充。很奇怪,对吧? @HarveyFrench
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2019-02-10
    • 2020-12-27
    相关资源
    最近更新 更多