Input/Output durch VBA Code
22.09.2016 22:13:11
Gröver
ich wende mich mit dem folgenden, allgemeinen Problem natürlich vor allem
an VBA Profis:
Bekanntlich wird die Effizienz von VBA Code in der Hauptsache von der Anzahl
der "Interaktionen" zwischen VBA Excel und dem VBA Code bestimmt. So benötigt
das Einlesen der Inhalte von 100 Zellen mit einer einzigen Anweisung
(1) {Variant-Variable} = {umfassender Rechteck-Bereich}
nur einen Bruchteil der Laufzeit im Vergleich zu 100 Anweisungen
(2) {Variable} = {Bereich einer einzigen Zelle}
Durch (1) wird die Variant-Variable zu einer Variant-Matrix mit den Grenzen des
Rechteck-Bereichs. Selbst wenn die interessierenden Inhalte nur in einigen Zellen
im Rechteck-Bereich liegen, ist Anweisung (1) die effizientere Technik.
Das gleiche gilt ebenso für die Ausgabe mit einer Anweisung
(3) {Rechteck-Bereich} = {Variant-Matrix}
und zwar auch dann, wenn in der zuvor eingelesenen Variant-Matrix nur einigen
Matrix-Elementen geänderte Werte zugewiesen wurden.
Unglücklicherweise ist aber die Wirkung der Anweisungen (1) und direkt danach (3)
nicht "idempotent": Alle Zellen im Rechteck-Bereich verlieren ihre etwaigen Formeln.
Statt dessen werden die momentanen Formelergebnisse zum jeweiligen Zelleninhalt.
F r a g e: Gibt es irgend eine Bedingung mit der Wirkung, dass VBA Excel die
zu einem Matrix-Element gehörende Zelle unverändert lässt, aber das Matrix-Element
der Zelle dann zuweist, wenn diese Bedingung nicht auf die Zelle zutrifft.
I n f o: Ein Matrix-Element wird z.B. ignoriert, wenn es nicht mit der ersten
Zelle einer Verbundzelle korrespondiert. Aber diese Bedingung ist nutzlos, weil
man dafür ja das Layout des Tabellenblattes (temporär) ändern müsste.
V e r s i o n: Gibt es eine positive Antwort, dann ist natürlich auch wichtig,
für welche Office Version die Antwort gilt.
Ich verwende (wegen des Menü-Designs) noch Office 2003.
Im Voraus besten Dank und freundliche Grüße
Bernhard Gröver