Anzeige
Archiv - Navigation
1368to1372
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Werte von eingebauten Konstanten abfragen

Werte von eingebauten Konstanten abfragen
15.07.2014 12:53:40
Günther

Hallo,
kann man im VBA (wenn ja, dann wie) den Wert der eingebauten Konstanten abfragen, wenn man den Namen als Inhalt einer String-Variablen kennt?
Folgender Code verdeutlicht die Fragestellung:

Sub Test()
Dim ConstName As String
ConstName = InputBox("Bitte den Namen einer Konstanten eingeben:" & vbCr & " (z.B. vbRed):")
MsgBox "Der Wert der Konstanten beträgt:" & ???
End Sub

Danke für Eure Hilfe!
Grüße Günther

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte von eingebauten Konstanten abfragen
15.07.2014 13:19:31
Oberschlumpf
Hi Günther
1. Ich weiß (noch) nicht, ob + wie das geht.
2. Würd mich interessieren, wozu das gut sein soll?
Denn du, als der Code-Programmierer, kennst ja die Namen der in deinem Code verwendeten Konstanten.
Dann könntest du auch gleich mit MsgBox Konstante1 die Werte anzeigen.
Außerdem ändern sich die Werte ja nicht, dann wären es ja Variablen.
3. Wenn ein Anwender die Konstanten abfragen soll, dann wirds n Glücksspiel. Denn woher soll der AW wissen, wie die Konstanten im Code heißen?
Ciao
Thorsten

AW: Werte von eingebauten Konstanten abfragen
15.07.2014 14:33:50
Günther
Hi Thorsten,
meine geplante Anwendung wäre folgende:
Ein Excel-Makro befüllt ein vorbereitetes Word-Dokument mit Diagrammen und Tabellenbereichen.
Der Benutzer legt dabei in einer jederzeit bearbeitbaren Liste fest, welche Excel-Elemente an welcher Stelle mit welcher Art eingefügt oder verlinkt werden sollen. In dieser Liste steht dann beispielsweise für den Einfügetyp wdPasteEnhancedMetafile, welches den internen Wert 9 hat.
Damit der Benutzer die Möglichkeit hat, weitere Einfügearten zu verwenden, muss das Makro in der Lage sein, Konstantennamen in dessen internen Wert aufzulösen.
Es soll nicht so sein, dass die zulässigen Varianten auscodiert sind, da der Benutzer dann entweder auf diese Varianten eingeschränkt ist oder das Makro anpassen muss.
Es soll auch nicht so sein, dass die internen Werte der Konstanten in einer Stammdatenliste auf einem Excel-Tabellenblatt hinterlegt sind, was natürlich auch möglich wäre, aber nicht so elegant ist.
Es soll so sein, dass der Benutzer eine neue Variante z.B. aus einem selbst aufgezeichneten Word-Makro einfach rauskopiert und in die Excel-Liste einfügt. Er soll nicht zusätzlich auch noch den internen Wert der Konstante ermitteln müssen ...
Aber nur weil ich gerne hätte, dass das geht, heißt es ja noch lange nicht, dass es tatsächlich eine Möglichkeit dazu gibt ...
Grüße Günther

Anzeige
sorry, ich weiß da nix...wer anders bitte owT
15.07.2014 14:37:59
Oberschlumpf

Im Prinzip isollte das schon möglich sein, ...
15.07.2014 15:44:40
Luc:-?
…Günther,
allerdings benötigst du dann ein Objekt, zu dessen Eigenschaften auch diese Konstante gehört.
Bei deinem Bsp handelt es sich aber um eine WdKonstante und soweit ich, ausgehend von früheren wdVersionen, weiß, waren die WdPgmmierer nicht so eifrig im Anlegen von Enumerationen wie die von Xl, in dem auch einige mögliche Werte keine Enumerationsnamen haben → bspw Borders(1…4).
Pgmiersprachen kennen 3 Methoden der DatenBereitstellung, CallByReference (Standard, besonders für Objekte, VBA →ByRef), CallByValue (VBA →ByVal) und CallByName (zur Laufzeit aufgelöst, weshalb diese Methode oft fehlt). In VBA wurde zur Realisierung der letzten Methode nachträglich eine vbFkt/Methode eingeführt, die genauso heißt und mit der eine Eigenschaft eines Objekts (Param/Arg1) als Namenstext (Param/Arg2) übergeben wdn kann. Mit Param/Arg3 wird dann unterschieden, um was für eine Art von Aktion es sich handelt. Das ist den Property Let/Get/Set-Prozeduren analog angelegt — zusätzlich gibt es aber noch die vbMethod-Enum-Konstante, die Param/Arg2 als Namen einer vbMethode (auch vbFkt) ausweist.
Versuche mal damit und vbGet dein Glück, aber wie gesagt, als Param/Arg1 wird ein Parent-Objekt benötigt!
Gruß, Luc :-?

Anzeige
Noch einer, der seine Mails nicht liest! owT
16.07.2014 15:03:45
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige