Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
251 views
in Technique[技术] by (71.8m points)

vba - ReDim Preserve in For Loop

I don't know what I am doing wrong as the code below is able to ReDim Preserve the first iteration but not the second.

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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Try to change the code as follows:

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

If you need the dimensions to be swapped, finally you can apply WorksheetFunction.Transpose method.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...