Wenn die statement das Überschreiben der anderen VBA ergibt

Ich habe ein Problem mit den Ausgaben meiner loop. Während die Subroutine läuft, kann ich sehen, dass die Ergebnisse der letzten IF-statement durch die Ergebnisse der zweiten überschrieben werden. Mein Code ist wie folgt strukturiert:

for i = 1 to 5 for j = 1 to 50 for each events.value in eventArray if events.value = arrayElem then if cells(i,j).value = "x" then type = "col1" elseif cells(i,j).value = "y" then date = "col2" elseif cells(i,j).value = "z" then num = "col3" end if count = count + 1 activeworkbook.worksheets("output").cells(count + 1, 1) = type activeworkbook.worksheets("output").cells(count + 1, 2) = date activeworkbook.worksheets("output").cells(count + 1, 3) = num end if next arrayElem if cells(i,j).value = "a" then name = "row1" elseif cells(i,j).value = "b" then size = "row2" elseif cells(i,j).value = "c" then height = "row3" end if activeworkbook.worksheets("output").cells(count + 2, 1) = name activeworkbook.worksheets("output").cells(count + 2, 2) = size activeworkbook.worksheets("output").cells(count + 2, 3) = height next j next i 

Offensichtlich sind dies Dummy-variables und Ergebnisse, aber die Gesamtstruktur ist die gleiche wie der echte Code. Ich kann sehen, dass "Name", "Größe" und "Höhe" gedruckt werden, aber dann werden sie durch "Typ", "date" und "Num" ersetzt. Wie verhindere ich das? Jedes Mal, wenn ein neues Ereignis gefunden wird, brauche ich es, um die zugehörigen Merkmale auszudrucken, die in einer neuen Zeile im Blatt "Ausgabe" gedruckt sind.

Solutions Collecting From Web of "Wenn die statement das Überschreiben der anderen VBA ergibt"

Betrachten Sie die folgende vereinfachte Version Ihres Codes:

 For i = 1 To 100 If x = y Then rowNum = rowNum + 1 Cells(rowNum + 1, 1) = "A" End If Cells(rowNum + 2, 1) = "B" Next 

Jedes Mal, wenn Sie die loop durchlaufen, schreiben Sie entweder ein oder zwei Dinge (zwei, wenn x = y wahr ist, eins, wenn dies nicht der Fall ist), aber Sie erhöhen die Zeilennummer nur um null oder eins (eins, wenn x = y wahr ist , Null, wenn es nicht ist). Selbst wenn Sie wissen, dass x immer gleich y ist, versuchen Sie immer noch, zwei Informationszeilen zu schreiben, aber den Zeilenzähler nur um eins zu erhöhen.

Angenommen, Sie versuchen nicht, die "B" s in meinem Beispiel durch die "A" s von der nächsten Iteration durch die loop zu replace, sollten Sie den Code in etwas wie ändern:

 For i = 1 To 100 If x = y Then rowNum = rowNum + 1 Cells(rowNum, 1) = "A" End If rowNum = rowNum + 1 Cells(rowNum, 1) = "B" Next