【问题标题】:VBA - problem copying data from storage array to sheet arrayVBA - 将数据从存储阵列复制到工作表阵列的问题
【发布时间】:2020-12-01 06:04:37
【问题描述】:

我正在尝试在 VBA 中复制数据表在 excel 中的作用。到目前为止,我已经让代码按我的意愿工作,但是当我从临时存储数组中复制数据时,它会偏移 1 列和 1 行。

我无法弄清楚问题是什么?提前致谢。


Sub DataTableLoop()

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Dim CodeRng As Range
Dim PasteRng As Range
Dim WatchRng As Range
Dim ResultRng As Range
Dim ResultRes As Range
Dim x As Integer
Dim y As Integer
Dim i As Integer
Dim Count As Integer
Dim col As Integer
Dim MyArray As Variant
Dim TempArr As Variant
Dim CodeVar As Range

Set CodeRng = Worksheets("OptionCodes").[CodeTop]
Set PasteRng = Worksheets("OptionCodes").[OptionsCode]
Set WatchRng = Worksheets("OptionCodes").[WatchRange]
Set ResultRng = Worksheets("OptionCodes").[ResultsRange]

col = WatchRng.Columns.Count

x = Worksheets("OptionCodes").[Iterations].Value
y = x - 1
i = 0

Set ResultRes = ResultRng.Resize(x)

ReDim MyArray(x, col)

Do While i <= y

Set CodeVar = CodeRng.Offset(i, 0)

Count = i + 1

Application.StatusBar = "Iteration: " & Count & " of " & x

    CodeVar.Copy
    PasteRng.PasteSpecial Paste:=xlPasteValues

        Application.Calculate
    
    TempArr = WatchRng
    For j = 1 To col
        MyArray(Count, j) = TempArr(1, j)
    Next j
    
i = i + 1

Loop

ResultRes = MyArray

Application.ScreenUpdating = True

Application.Calculation = xlCalculationAutomatic

End Sub

【问题讨论】:

    标签: arrays excel vba loops copy


    【解决方案1】:

    Redim 默认情况下基于 0,因此您的数组实际上比您预期的大 1 行和列。要获得 1,您需要指定下限

    ReDim MyArray(1 To x, 1 To col)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多