2016-07-12 9 views
1

Hallo Ich arbeite an einem Makro in VBA für Excel. Ich habe eine verschachtelte for-Schleife in meinem Code, wie unten zu sehen ist. Die zweite Schleife läuft nicht; Selbst ein MsgBox() - Befehl innerhalb der zweiten Schleife führt zu keiner Aktion, und das Programm scheint nur die verschachtelte Schleife ohne gemeldete Fehler zu überspringen.VBA verschachtelt für Schleife wird nicht ausgeführt

Im Klartext Diese verschachtelte Schleife soll:

1) in dem Array categories_string die Zeichenfolge des i Eintrag Nehmen (first for-Schleife).

2) eine Iteration durch die 300+ Reihen in der Spalte "AE" in der Excel-Datei (für zweite Schleife, "Länge" die Länge der Spalte von Daten in "AE")

3) sucht string stimmt überein und fügt 1 zu dem entsprechenden Eintrag im Feld categories_value hinzu, das mit Variablen gefüllt ist, die auf 0 gesetzt sind (die if-Anweisung).

For i = LBound(categories_string) To UBound(categories_string) 
    For p = 1 To p = length 
     If Worksheets("sheet1").Cells(p + 2, "AE").Value = categories_string(i) Then 
     categories_value(i) = categories_value(i) + 1 
     End If 
    Next 
Next 
+8

'Für p = 1 Länge ' –

+0

Da Sie bereits wissen, wie man mit Arrays arbeitet, warum nicht die Werte in Spalte AE in ein Array und Zyklus stattdessen durch? Es wäre schneller, als die Zellen selbst zu schleifen. 'AEArray = Worksheets (" sheet1 "). Range (" AE3: AE "& länge) .Wert' dann machen Sie stattdessen eine andere Schleife für dieses Array. –

+0

Ihre Antwort hat es behoben. Und super Vorschlag! Dies ist nur mein zweiter Tag der Verwendung von VBA, so dass jeder Ratschlag geschätzt wird. – PSwalker

Antwort

4

ändern

For p = 1 To p = length 

zu

For p = 1 To length 

Sollten Sie bis beheben.

Sie können auch Scott Cranner's comment betrachten, vor allem, wenn Ihre categories_string ist groß und length ist groß. Oder machen Sie es einfach für die Praxis

Verwandte Themen