programing

ReDim Preserve는 무엇을 합니까?

megabox 2023. 6. 8. 19:34
반응형

ReDim Preserve는 무엇을 합니까?

나는 다른 사람의 vba 엑셀 코드를 보고 있습니다.그들은 하고 있습니다ReDim Preserve dataMatrix(7, i)양쪽 루프에서이것은 무엇을 합니까?

그리고 두 번째 루프는 첫 번째 루프의 데이터를 덮어쓰는 것 같은데 맞나요?

Dim dataMatrix() As String

    Worksheets.Item("ETS").Select
    Do While Trim(Cells(r, 1)) <> ""
       Debug.Print "The line: ", Trim(Cells(r, 1)), r
        r = r + 1
        dataMatrix(1, i) = Trim(Cells(r, 1))    ''file name
        dataMatrix(2, i) = Trim(Cells(r, 2))    ''sample type
        dataMatrix(3, i) = Trim(Cells(r, 3))    ''sample name
        dataMatrix(4, i) = "ETS"    ''
        dataMatrix(5, i) = Trim(Cells(r, 5))    ''Response
        dataMatrix(6, i) = Trim(Cells(r, 6))    ''ISTD Response
        dataMatrix(7, i) = Trim(Cells(r, 10))   ''Calculated Conc
        i = i + 1
        ReDim Preserve dataMatrix(7, i)
    Loop

    r = 5
    Worksheets.Item("ETG").Select
    Do While Trim(Cells(r, 1)) <> ""
       Debug.Print "The line: ", Trim(Cells(r, 1)), r
        r = r + 1
        dataMatrix(1, i) = Trim(Cells(r, 1))    ''file name
        dataMatrix(2, i) = Trim(Cells(r, 2))    ''sample type
        dataMatrix(3, i) = Trim(Cells(r, 3))    ''sample name
        dataMatrix(4, i) = "ETG"
        dataMatrix(5, i) = Trim(Cells(r, 5))    ''Response
        dataMatrix(6, i) = Trim(Cells(r, 6))    ''ISTD Response
        dataMatrix(7, i) = Trim(Cells(r, 10))   ''Calculated Conc
        i = i + 1
        ReDim Preserve dataMatrix(7, i)
    Loop

Redim Preserve배열의 내용을 유지하면서 배열의 치수를 변경할 수 있습니다.

Redim Preserve각 루프의 끝에서 다른 행을 배열에 추가합니다.

제 생각에 두 번째 루프가 배열에 추가되는 것 같습니다.i변수는 루프 간에 변경되지 않습니다.

ReDim데이터 크기를 수정할 때 어레이의 데이터를 보존합니다.또한 다음과 같은 이유로 데이터를 덮어쓰지 않아야 합니다.i루프가 반복될 때마다 증가합니다. 첫 번째 루프는 빈 셀을 만날 때까지 멈추지 않고, 반복될 때마다 배열 길이를 하나씩 변경하여, 길이가 다음과 같을 때.8덧붙여서1에게i그리고 새로운 길이가 됩니다.9두 번째 반복이 발생하면 인덱스가 있는 배열의 경계에 새 요소를 씁니다.9길이를 다시 수정하여 다음이 되도록 합니다.1요소가 더 길어지고 빈 줄이 나타날 때까지 반복됩니다.

언급URL : https://stackoverflow.com/questions/2916009/what-does-redim-preserve-do

반응형