Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
Anzeige
Archiv - Navigation
1916to1920
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

Typen unverträglich

Typen unverträglich
08.02.2023 13:59:20
Christian
Hallo Ihr Guten, ich habe die Logik, dass wenn eine definierte Zelle (mit Name "DROPDOWN") leer bleibt, dass ich einen STATUS = "DEFAULT" setze.
Sub CHECK_STATUS
   Dim STATUS as Variant
   If worksheets("A").Range("DROPDOWN") = "" then
      STATUS = "DEFAULT"
   End If
End Sub
Außerdem habe ich für den STATUS = "DEFAULT" eine Füllfarbe definiert
Sub DEFINE_COLOURS
   Dim STATUS_DEFAULT_FILL_COLOUR as Variant
   STATUS_DEFAULT_FILL_COLOUR = RGB(190, 190, 190)
End Sub
Und jetzt dachte ich, ich könnte klever sein, und mit dem STATUS viel Schreibarbeit umgehen, in dem ich 
   worksheets("A").Range("DROPDOWN").Interior.Color = "STATUS_" & STATUS & "_FILL_COLOUR
setzen kann, weil dort dann ja steht
   worksheets("A").Range("DROPDOWN").Interior.Color = STATUS_DEFAULT_FILL_COLOUR
Das führt aber zu einem Fehlerhinweis. 
Das Ganze ist eine komplexere Umgebung eingebettet, aber im Kern trifft die Beschreibung die Situation.
Hat jemand einen guten Rat? Ich hatte mich so über die gute Idee gefreut :)
Vorab vielen vielen Dank und viele Grüße
Christian


							

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Typen unverträglich
08.02.2023 14:21:40
Zwenn
Hallo Christian,
das funktioniert nicht, weil Du Quellcode und Daten nicht in dieser Weise vermischen kannst. "STATUS_" & STATUS & "_FILL_COLOUR ergibt einen String, den Du versuchst als Variablennamen zu verwenden. Das geht nicht. Du kannst aber auf den Wert in Dropdown prüfen und dann ggf. Deinen Default Wert setzen:

If worksheets("A").Range("DROPDOWN") = "DEFAULT" then
  worksheets("A").Range("DROPDOWN").Interior.Color = STATUS_DEFAULT_FILL_COLOUR
End If
Solltest Du mehrere Werte haben, die Du prüfen musst, kannst Du statt If Then auch Select Case verwenden.
Viele Grüße,
Zwenn
Anzeige
AW: Typen unverträglich
08.02.2023 14:26:51
Christian
Hallo Zwenn,
vielen Dank für die schnelle Antwort. Schade...
Ja, es gibt noch mehr Status, daher wollte ich das ganze If then-Getippe vermeiden. Dann probiere ich mich mal am Select Case aus.
Abermals vielen Dank und viele Grüße
Christian
AW: Typen unverträglich
08.02.2023 14:41:05
Daniel
Hi
Weise doch einfach an der Stelle, an der du den Status bestimmst auch gleich die Farbe einer Variablen zu.
     If worksheets("A").Range("DROPDOWN") = "" then
        STATUS = "DEFAULT"
        STATUS_COLOR = RGB(190, 190, 190)
     End If
     ...
     worksheets("A").Range("DROPDOWN").Interior.Color = STATUS_COLOR
wenn du über Text variabel steuern willst, könntest du auch das Dicitionary-Objekt verwenden.
Das ist im Prinzip ein Eindimensionales Array, bei dem man den Index über einen Freitext bilden kann:
Dim STATUS_FILL_COLOR as object
Set STATUS_FILL_COLOR = CreateObject("Scripting.Dictionary")
STATUS_FILL_COLOR("DEFAULT") = RGB(190, 190, 190)
...
     If worksheets("A").Range("DROPDOWN") = "" then
        STATUS = "DEFAULT"
     End If
...
    worksheets("A").Range("DROPDOWN").Interior.Color = STATUS_FILL_COLOR(STATUS)
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige