"Konstanter Ausdruck erforderlich"

Bild

Betrifft: "Konstanter Ausdruck erforderlich"
von: Franz W.
Geschrieben am: 22.09.2003 13:30:01

Hallo Fachleute,

ich möchte eine Konstante festlegen:

Const Farbe As Byte = Worksheets("Test").Cells(1, 45)

... bekomme, dabei aber folgende Fehlermeldung: "Konstanter Ausdruck erforderlich" und markiert ist: " .Cells ".

Könnt Ihr mir da bitte helfen, wie ich das richtig schreiben muss? Mit dem, was mir so einfällt, scheitere ich nämlich. Vielen Dank schon mal im Voraus.

Grüße
Franz

Bild


Betrifft: AW: "Konstanter Ausdruck erforderlich"
von: WernerB.
Geschrieben am: 22.09.2003 13:35:26

Hallo Franz,

VBA erwartet hier einen festen (konstanten) Wert, der während des Programmablaufs nicht mehr verändert werden kann.
Der Wert in einer Zelle kann aber verändert werden - und genau das gefällt dem System nicht.


Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).


Bild


Betrifft: AW: "Konstanter Ausdruck erforderlich"
von: Franz W.
Geschrieben am: 22.09.2003 13:59:30

Hallo Werner,

vielen Dank für Deine Hilfe. Ich will aber noch nicht so ganz aufgeben :-))). Ich brauche die Variable nicht wirklich als Konstante. Das war nur die Möglichkeit, die mir eingefallen ist.

Was ich brauche ist folgendes: "Farbe" ist eine Variable, die in mehreren Makros in einem einzigen Modul benötigt wird. Und ich wollte das nicht in jedes Makro extra schreiben (was mit " Farbe = Worksheets("Test").Cells(1, 45) " aber nicht anders geht, das ist ja nur innerhalb einer Prozedur möglich.).

" Dim Farbe as Byte " kann man ja über alle Makros schreiben.

Gibt es auch eine Formulierung für " Farbe = Worksheets("Test").Cells(1, 45) " , die oben drüber über die Makros geschrieben werden kann, sodass es für alle Makros gilt?

Grüße
Franz


Bild


Betrifft: AW: "Konstanter Ausdruck erforderlich"
von: WernerB.
Geschrieben am: 23.09.2003 07:27:00

Hallo Franz,

was Du suchst, ist vermutlich "Public". Sieh Dir dazu auch die VBA-Hilfe an.

Vor dem Makro (Standard-Modul):
Public Farbe As Byte

Im Makro:
Farbe = Worksheets("Test").Cells(1, 45)

Wenn die Variable "Farbe" mit einem Wert belegt ist, kann sie in allen Makros derselben Mappe (auch in unterschiedlichen Modulen) verwendet werden.


Gruß WernerB.


Bild


Betrifft: AW: "Konstanter Ausdruck erforderlich"
von: Franz W.
Geschrieben am: 23.09.2003 07:33:53

Hallo Werner,

vielen Dank für Deine weitere Hilfe. So mach ich es jetzt auch. Bzw. schreibe ich statt Public nach wie vor Dim, da ich es zwar in mehreren Makros brauche, diese aber nur in einem Modul stehen. Nur die zweite Zeile " Farbe = ... " brauche ich ebenfalls in mehreren Makros desselben Moduls. Und ich dachte, ich könnte das auch allgemeingültig oben drüber schreiben. Aber es muss wohl in jedes Makro reingeschrieben werden.

Vielen Dank und Grüße
Franz


Bild


Betrifft: AW: "Konstanter Ausdruck erforderlich"
von: WernerB.
Geschrieben am: 23.09.2003 12:50:10

Hallo Franz,

wenn Du "Dim" schreibst, muss dieses "Dim" in jedes Makro.
Schreibst Du "Public" vor das erste Makro, genügt das. Außerdem hat Du dann die Variable "Farbe" (wenn sie in einem Makro mit einem Wert belegt wurde) in allen folgenden Makros eben diesen selben Wert, ohne dass sie jedesmal neu belegt werden muss.


Gruß WernerB.


Bild


Betrifft: AW: "Konstanter Ausdruck erforderlich"
von: WernerB.
Geschrieben am: 23.09.2003 13:13:20

Hallo Franz,

Du kannst auch vor das erste Makro schreiben:
Public Const Farbe As Byte = 5

So kannst Du in allen Makros ohne weitere Deklaration die konstante Variable "Farbe" verwenden; der vorgegebene Wert (hier: "5") lässt sich in den Makros aber nicht mehr ändern.
Anstatt dem Wert "5" einen Zellbezug zu wählen, wird nicht funktionieren.


Gruß WernerB.


Bild


Betrifft: AW: "Konstanter Ausdruck erforderlich"
von: Franz W.
Geschrieben am: 23.09.2003 14:01:34

Hallo Werner,

jetzt muss ich mal nachfragen: "Dim" über alle Makros geschrieben, gilt für alle Makros im selben Modul?!? Verwende ich "Public" gilt die Zuweisung auch für andere Module?!? So habe ich es zumindest bei mir im Einsatz...?!?

Und das mit "Const" muss ich leider bleiben lassen, da die Farbnr. in einer Zelle frei wählbar sein soll.

Grüße
Franz


Bild


Betrifft: AW: "Konstanter Ausdruck erforderlich"
von: WernerB.
Geschrieben am: 23.09.2003 14:47:26

Hallo Franz,

mein Wissensstand ist der (habe es aber nicht getestet):
"Dim" vor dem ersten Makro (in einem Standard-Modul) funktioniert nicht (weder im selben, noch in einem anderen Modul der selben Mappe).
"Public" vor dem ersten Makro (in einem Standard-Modul) funktioniert im selben Modul und auch in allen anderen Modulen der selben Mappe.


Gruß WernerB.


Bild


Betrifft: AW: "Konstanter Ausdruck erforderlich"
von: Franz W.
Geschrieben am: 23.09.2003 15:24:50

Hallo Werner,

doch, ich hab's inzwischen nochmal probiert:

- Dim ganz oben funktioniert für alle Makros desjenigen Moduls, in dem es steht.
- Public: damit steht für alle Module zur Verfügung
- Const wollte ich auch noch probieren, ob das nur in einem oder allen Modulen geht, habe aber noch keine ZEit dazu (und in meinem kongreten Fall haut's ja eh nicht :-(((( )

Grüße
Franz


 Bild

Beiträge aus den Excel-Beispielen zum Thema " "Konstanter Ausdruck erforderlich""