Je regarde le code Excel vba de quelqu'un d'autre. ils font ReDim Preserve dataMatrix(7, i)
dans les deux boucles. Qu'est-ce que cela fait?
De plus, il semble que la deuxième boucle écrase simplement les données de la première boucle, est-ce correct?
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
préserve les données d'un tableau lorsque vous modifiez sa taille. De plus, il ne doit pas écraser les données car i
est incrémenté à chaque itération de la boucle: la première boucle ne s'arrêtera pas jusqu'à ce qu'elle rencontre une cellule vide, changeant la longueur du tableau à chaque itération, de sorte que lorsque la longueur est 8
il ajoute 1
au i
et la nouvelle longueur devient 9
. Lorsque la deuxième itération se produit, il écrit le nouvel élément à la limite du tableau avec l'index 9
, modifie à nouveau sa longueur pour qu'elle devienne 1
élément plus long et itère jusqu'à ce qu'il rencontre une ligne vide.
Redim Preserve
vous permet de modifier les dimensions d'un tableau tout en conservant le contenu du tableau.
Le Redim Preserve
à la fin de chaque boucle ajoute une autre ligne au tableau.
Je pense que la deuxième boucle s'ajoute au tableau car la variable i
n'est pas modifiée entre les boucles.