Discussion:
Arrayformel mit VBA
(zu alt für eine Antwort)
Steiner Marcel
2004-02-12 09:44:42 UTC
Permalink
Hallo zusammen!

Am 9.02.04 habe ich folgende Anfrage hier platziert:

----------

Mit welchem Befehl muss eine Arrayformel in einem Makro
hinterlegt werden, damit sie korrekt aktiviert wird, d.h.
wie wenn ich im Excel die Tastenkombination
STRG+UMSCHALT+EINGABE drücken würde?

Meine Excel-Formel sieht folgendermassen aus:

=UND(ODER(IDENTISCH(D2;'G:\Vorlagen\Supply
Management\[HT_Statuspruefung_060204.xls]
Hilfstabelle_Statusprüfung'!$D$3:$D$19));ODER(IDENTISCH
(E2;'G:\Vorlagen\Supply
Management\[HT_Statuspruefung_060204.xls]
Hilfstabelle_Statusprüfung'!$E$3:$E$19));ODER(IDENTISCH
(F2;'G:\Vorlagen\Supply
Management\[HT_Statuspruefung_060204.xls]
Hilfstabelle_Statusprüfung'!$F$3:$F$19));ODER(IDENTISCH
(G2;'G:\Vorlagen\Supply
Management\[HT_Statuspruefung_060204.xls]
Hilfstabelle_Statusprüfung'!$H$3:$H$19)))

Wenn ich diese mit STRG+UMSCHALT+EINGABE aktiviere,
funktioniert sie wunderbar. Mit dem Makro will's aber
nicht richtig funktionieren.

----------

Den Tipp von Frank habe ich befolgt, aber leider
funktioniert es nach wie vor nicht. Ausserdem habe ich
noch das Buch "VBA Programmierung" von Bernd Held gekauft,
doch leider steht dort nichts zu diesem Thema drin!

Wer kann mir hier helfen?

Viiielen Dank im Voraus und Gruss
Marcel Steiner
Thomas Ramel
2004-02-12 10:02:03 UTC
Permalink
Grüezi Marcel
Post by Steiner Marcel
Hallo zusammen!
Mehrfaches und erneutes Posting erhöht die Antwortfrequenz sohl kaum...
Bleibe daher doch bitte im angefangenen Diskussionsfaden, dann bleibt auch
der Zusammenhang erhlaten.
Post by Steiner Marcel
Mit welchem Befehl muss eine Arrayformel in einem Makro
hinterlegt werden, damit sie korrekt aktiviert wird, d.h.
wie wenn ich im Excel die Tastenkombination
STRG+UMSCHALT+EINGABE drücken würde?
Du hast schon mal den Makro-Recorder mitlaufen lassen, als Du die Formel in
die Zelle geschrieben und entsprechend abgeschlossen hast?

Ich denke, dass da dann doch einiges an Syntax herauskommen müsste...
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]
Steiner Marcel
2004-02-12 10:35:47 UTC
Permalink
Hallo Thomas
Post by Thomas Ramel
Mehrfaches und erneutes Posting erhöht die
Antwortfrequenz sohl kaum...
Post by Thomas Ramel
Bleibe daher doch bitte im angefangenen Diskussionsfaden,
dann bleibt auch der Zusammenhang erhlaten.

Dort antwortet aber niemand mehr, deshalb hab ich's
nochmals neu gepostet! Ansonsten hätte ich das schon nicht
gemacht...
Post by Thomas Ramel
Du hast schon mal den Makro-Recorder mitlaufen lassen,
als Du die Formel in die Zelle geschrieben und
entsprechend abgeschlossen hast?

Ja, ich habe den Makro-Recorder mitlaufen lassen. Nach der
Eingabe STRG+UMSCHALT+EINGABE erhielt ich die Mitteilung,
dass die Funktion nicht aufgezeichnet werden konnte.

Gruss
Marcel
Thomas Ramel
2004-02-12 10:43:36 UTC
Permalink
Grüezi Marcal
Post by Steiner Marcel
Post by Thomas Ramel
Du hast schon mal den Makro-Recorder mitlaufen lassen,
als Du die Formel in die Zelle geschrieben und
entsprechend abgeschlossen hast?
Ja, ich habe den Makro-Recorder mitlaufen lassen. Nach der
Eingabe STRG+UMSCHALT+EINGABE erhielt ich die Mitteilung,
dass die Funktion nicht aufgezeichnet werden konnte.
Könnte es sein, dass die Formel zu komplex ist?

Eine einfache Matrix-Funktion für die Ermittllung eines Mimimum-Wertes ohne
0 ist die folgende:

{=MIN(WENN(A1:A14<>0;A1:A14;""))}

...die dann vom recorder wie folgt aufgezeichnet wurde:

Selection.FormulaArray = _
"=MIN(IF(RC[-2]:R[13]C[-2]<>0,RC[-2]:R[13]C[-2],""""))"

Es werden die relativen Bezüge zur Formelzelle in R1C1-Schreibweise verwendet.
Für deine Formel könntest Du hier an die Grenze von 1024 Zeichen für die
Formsl stossen.
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]
Philipp von Wartburg
2004-02-12 23:17:19 UTC
Permalink
Hallo Marcel
Hallo Thomas

Thomas hat recht: Die Formel ist zu komplex. Und dies aus gleich
zwei Gründen:
1. Der Makrorecorder kann nur Zelleingaben bis zu einer Länge
von maximal 255 Zeichen aufzeichnen. Bei einem längeren Zell-
inhalt erscheint die Fehlermeldung "Kann nicht aufzeichnen". Deine
Formel ist 485 Zeichen lang.
2. Auch wenn man auf den Makroaufzeichnung verzichtet und statt-
desse mit VBA die Formel anhand der FormulaArray-Eigenschaft in
die Zelle einträgt, tritt der Laufzeitfehler 1004 auf. Matrixformeln
können in Excel normalerweise bis zu 1'024 Zeichen lang sein - wenn
man sie direkt in eine Zelle eingibt. Wegen eines Bugs jedoch akzep-
tiert die FormulaArray-Eigenschaft nur Formeln bis zu einer Länge
von höchstens 255 Zeichen.

Es bleibt somit nichts anderes übrig, als die Matrixformel so zu kürzen,
damit sie maximal 255 Zeichen lang ist.

Ausführliche Infos dazu findest du auf der Website XLimits:
http://195.186.84.74/xlimits/excel-new.htm

Gruss
Philipp von Wartburg



"Thomas Ramel" <***@MVPs.org> schrieb im Newsbeitrag news:***@MVPs.org...
Grüezi Marcal
Post by Steiner Marcel
Post by Thomas Ramel
Du hast schon mal den Makro-Recorder mitlaufen lassen,
als Du die Formel in die Zelle geschrieben und
entsprechend abgeschlossen hast?
Ja, ich habe den Makro-Recorder mitlaufen lassen. Nach der
Eingabe STRG+UMSCHALT+EINGABE erhielt ich die Mitteilung,
dass die Funktion nicht aufgezeichnet werden konnte.
Könnte es sein, dass die Formel zu komplex ist?

Eine einfache Matrix-Funktion für die Ermittllung eines Mimimum-Wertes ohne
0 ist die folgende:

{=MIN(WENN(A1:A14<>0;A1:A14;""))}

...die dann vom recorder wie folgt aufgezeichnet wurde:

Selection.FormulaArray = _
"=MIN(IF(RC[-2]:R[13]C[-2]<>0,RC[-2]:R[13]C[-2],""""))"

Es werden die relativen Bezüge zur Formelzelle in R1C1-Schreibweise
verwendet.
Für deine Formel könntest Du hier an die Grenze von 1024 Zeichen für die
Formsl stossen.
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]
Loading...