[VBA] Mehrere if-Schleifen hintereinander

b_kannter

Well-known member
ID: 156336
L
28 April 2006
323
10
Hallo,

ich brauche mal eure Hilfe. Ich bastel grad an einem VBA-Programm, dass aus einer Tabelle Daten filtert, die der User vorher eingibt. Beispielsweise gibt es als Auswahlmöglichkeiten das Jahr, eine Nummer, ein Bundesland, eine Anlage und noch ein paar andere, plus Kombinationen aus diesen Möglichkeiten. Jetzt habe ich kleine Subs geschrieben, die die einzelnen abarbeiten, nur bei den Kombinationen wird es jetzt ziemlich langwierig.
Gibt es eine Möglichkeit, dass die einzelnen Subs nacheinander durchlaufen, und, ich sag einfach mal, die Daten werden im Arbeitsspeicher gespeichert, das zweite sub läuft durch, und filtert aber nur die, die schon im Arbeitsspeicher sind, und schmeißt die raus, die da nicht zugehören, dann das dritte sub usw.
Geht das irgendwie???
 
Setze "Arbeitsspeicher" = Variable, dann gehts ;)
 
theHacker schrieb:
Setze "Arbeitsspeicher" = Variable, dann gehts ;)
Geht das so einfach?? Auch wenn es teilweise über 1000 verschiedene Werte sind?? Mit über 30 Spalten?? Ich dachte eher an ein Array von PHP oder sowas.
 
b_kannter schrieb:
Ich dachte eher an ein Array von PHP oder sowas.
Logisch n Array ;)
Wenn du die Daten z.B. in Excel hast, dann brauchst du aber nicht alles kopieren, sondern dir nur die Zeilennummer merken, da die Daten selber ja im Datenblatt stehen.

Somit kannst du von einem zweidimensionalen Array schon auf ein einfaches, eindimensionales runtertransformieren.
 
theHacker schrieb:
Logisch n Array ;)
Wenn du die Daten z.B. in Excel hast, dann brauchst du aber nicht alles kopieren, sondern dir nur die Zeilennummer merken, da die Daten selber ja im Datenblatt stehen.

Somit kannst du von einem zweidimensionalen Array schon auf ein einfaches, eindimensionales runtertransformieren.

Und wie lasse ich dann bei der zweiten Suche alle Sachen aus dem Array schmeißen, die nicht in das Suchmuster passen?
 
b_kannter schrieb:
Und wie lasse ich dann bei der zweiten Suche alle Sachen aus dem Array schmeißen, die nicht in das Suchmuster passen?
Leer setzen halt.
Code:
For i = 1 To MaxRow ' alle Zeilen durchgehen
  If Row(i)<>"" Then ' nur prüfen, wenn nicht schon ausgeschlossen  
    If MatchSearch(Row(i))=False Then ' passt nicht ?
      Row(i)="" ' weg für nächsten Durchgang
    End If
  End If
Next i
 
theHacker schrieb:
Leer setzen halt.
Code:
For i = 1 To MaxRow ' alle Zeilen durchgehen
  If Row(i)<>"" Then ' nur prüfen, wenn nicht schon ausgeschlossen  
    If MatchSearch(Row(i))=False Then ' passt nicht ?
      Row(i)="" ' weg für nächsten Durchgang
    End If
  End If
Next i

Das klingt logisch :)
Besten Dank!
 
Und direkt die nächste Frage hinterher.

Ich habe jetzt ein zweidimensionales Array. Gibt es die Möglichkeit, in der zweiten Dimension alle Variablen ="" zu setzen, beispielsweise mit einem Platzhalter wie * ??
 
b_kannter schrieb:
Ich habe jetzt ein zweidimensionales Array. Gibt es die Möglichkeit, in der zweiten Dimension alle Variablen ="" zu setzen, beispielsweise mit einem Platzhalter wie * ??
VB is da sehr unflexibel, d.h. du musst dir schon selber eine Prozedur schreiben, die das für dich erledigt.