Effizienter VBA Code / Multidimensionale Arrays
21.05.2015 11:29:50
Moritz
ich stehe vor folgendem Problem, bei dem ein Excel-Sheet (B) von einem anderen Excel-Sheet (A) aus auf korrekten Inhalt geprüft werden soll. Zur Effizienz habe ich folgende Frage, was die elegantere Programmierung ist:
FRAGE 1:
Excel-Sheet (B) enthält zahlreiche Spalten, die überprüft werden müssen. Für jede Überprüfung (10 bis 30) möchte ich eine VBA Funktion anlegen, die jeweils bestimmte Spalten prüft und von einem Main Sub aufgerufen wird. Excel-Sheet (A) öffnet (B) und beginnt dann mit den Checks:
Variante 1 - Im Main Sub von (A) habe ich eine For-Schleife, die durch alle Zeilen (1.000 bis 10.000) von (B) läuft und für jede Zeile die Prüffunktion aufruft. Dabei werden nur die Werte von den relevanten Spalten der entsprechenden Zeile an die Funktion übergeben.
Variante 2 - Im Main Sub von (A) wird die Prüffunktion aufgerufen und in der Prüffunktion wird eine For-Schleife durchlaufen mit den einzelnen Zeilen. Der Zugriff erfolgt immer auf (B).
Variante 3 - Im Main Sub von (A) erstelle ich einen Multidimensionalen Array mit den relevanten Spalten von (B) und übergebe den Array an die Prüffunktion, die dann den Inhalt des Arrays prüft.
FRAGE 2:
Wenn ich in einer Funktion einen multidimensionalen Array erstelle, wie kann ich den im aufrufenden Sub wieder entgegen nehmen, wenn ich vorher nicht weiß, wie groß der Array ist und wie viel Dimensionen er hat? Wie muss ich den Array in der aufrufenden Sub deklarieren?
FRAGE 3:
Wenn ich einen 2 dimensionalen Array nutze mit:
Spalte A - 1
Spalte B - 2
Spalte C - 3
...
Gibt es die Möglichkeit die Zahlen in der "2. Spalte" durch den Namen in der "1. Spalte" direkt zu erhalten?
Bsp:
Array(1,1) = "Spalte A"
Array(1,2) = 1
Array(2,1) = "Spalte B"
Array(2,2) = 2
Array."Spalte A" sollte mir dann den Werte 1 geben. Geht so etwas?
Vielen Dank und viele Grüße
Moritz