ReDim保留在For循环中

时间:2016-10-03 08:59:35

标签: vba excel-vba excel

我不知道我做错了什么,因为下面的代码能够ReDim Preserve第一次迭代而不是第二次迭代。

Dim inj0() As Variant
Dim i As Integer
Dim c As Integer
Dim Rng As Range
Dim pos As Integer

'Find the last used column in a Row
Dim LastCol As Integer
With ActiveSheet
    LastCol = .Cells(2, .Columns.Count).End(xlToLeft).Column
End With

c = 0
For i = 1 To LastCol
    pos = InStr(Cells(2, i), "80")
    If pos = 1 Then
        ReDim Preserve inj0(c, 2)
        inj0(0, 1) = "80"
        Set Rng = Cells(2, i)
        inj0(c, 2) = Rng.Offset(-1, 0).Value
        inj0(c, 0) = Rng.Offset(3, 0).Value
        c = c + 1
    End If
Next

1 个答案:

答案 0 :(得分:0)

尝试按如下方式更改代码:

c = 0
ReDim inj0(2, 0)
inj0(1, 0) = "80"
For i = 1 To LastCol
    pos = InStr(Cells(2, i), "80")
    If pos = 1 Then
        ReDim Preserve inj0(2, c)
        Set Rng = Cells(2, i)
        inj0(2, c) = Rng.Offset(-1, 0).Value
        inj0(0, c) = Rng.Offset(3, 0).Value
        c = c + 1
    End If
Next

如果您需要交换尺寸,最后可以apply WorksheetFunction.Transpose method