Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
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
Select Case... Case Else Problem
05.12.2022 14:40:46
Gula
Hallo zusammen,
ich hab das Problem, dass meine Case Else Anweisung nicht funktioniert. In meiner Beispieldatei habe ich die Case Else Funktion deaktiviert.
So funktioniert alles.
Das Makro funktioniert wie folgt:
Einen Bereich markieren, dann rechtsklick in diesen Bereich, dies öffnet ein Eingabefeld, dort einen definierten Wert eingeben, z.B. 3101. Diese Eingabe färbt das Feld gelb und schreibt den Wert 3101, bei der Eingabe von z.B. 3122, öffnet sich eine UserForm Box, bei der man auswählen kann, in welcher der zwei Farben, die Zellen gefärbt werden sollen. Abbrechen, oder Ok bei keiner Eingabe, leert die ausgewählten Zellen und setzt die Füllung auf "keine Füllung".
Soweit so gut und hoffentlich auch verständlich.
Wenn ich nun im Modul Fzg_Beschriftung und dort ganz unten bei FzgFärben, die Case Else Anweisung wieder aktiv setze, dann funktioniert das Makro so nicht mehr.
Denn dann ist es egal, was ich eingebe, er färbt die Zellen immer mit der Case Else Anweisung (RGB 248, 203, 173). Auch bei Abbrechen oder keiner Eingabe und Bestätigung mit Ok, färbt er alles in dieser Farbe ein.
Ich hätte es gerne so, dass wenn keine der Bedingungen, welche ich bei FzgFärben als Case bestimmt habe zutrifft, er die Case Else Farbe nimmt. Wenn jedoch eine Bedingung von mir zutrifft, soll er diese Farbe nehmen.
Ich dachte eigentlich, dass Case Else das so durchführen sollte. Meine VBA Kenntnisse sind mehr als mager, deshalb bin ich auch durch Recherche im Internet nicht auf eine Lösung gestoßen.
Ich hoffe, ihr könnt mir helfen.
Grüße
https://www.herber.de/bbs/user/156535.xlsm

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select Case... Case Else Problem
05.12.2022 15:00:34
Yal
Hallo Gula,
verwende in einem solchen Fall lieber if-elseif-else-end if. ElseIf führt zu einem einzige Abschluss-"End If".
Select case ist nur so bevorzügen, wenn eine Variable mit versch. Werten vergelichen werden sollen. "Select Case True" ist nicht zu empfehlen

'Zellen färben
Sub FzgFärben()
Dim rZelle As Range
For Each rZelle In Selection.Cells
If rZelle.Text Like "*22*" Then  '31/22
UserForm1.Show
ElseIf rZelle.Text Like "*24*" Then '31/24
UserForm1.Show
ElseIf rZelle.Text Like "*27*" Then '31/27
UserForm1.Show
ElseIf rZelle.Text Like "*01*" Then
Selection.Interior.Color = RGB(255, 255, 0)      '31/01
'Else
'Selection.Interior.Color = RGB(248, 203, 173)    'Allgemein
End If
Next
End Sub
VG
Yal
Anzeige
AW: Select Case... Case Else Problem
05.12.2022 15:34:36
Gula
Hallo Yal, danke für den Code. Ich habe das mal so umgesetzt und nun ist es so, dass er die ersten beiden Zellen von allen markierten in der richtigen Farbe färbt, aber die restlichen weiterhin in der rZelle.Interior.Color = RGB(248, 203, 173) einfärbt. Zumindest schon einmal ein Teilerfolg. Anscheinend wird rZelle nicht als Selection.Cells interpretiert.
Das er die ersten Beiden nur färbt, liegt an dem Makro für die Namenseingabe Fzg_name_insert, da ich damit festgelegt habe, dass er den Wert immer an zweiter Stelle schreiben soll.

Sub FzgName_Insert()
Dim sTxt As String
sTxt = InputBox("Bitte Funkrufnamen benennen:" & Chr(13) & "Abbrechen leert die ausgewählten Zellen")
'If sTxt = "" Then Exit Sub
Selection.Cells(2).Value = sTxt
End Sub
Dort die 2 hinter Selection.Cells
Anzeige
AW: Select Case... Case Else Problem
05.12.2022 15:03:03
Dirk
Hallo!
Case Aweisung sollte rZelle.Interior.Color = ... sein.
Dann sollte es funktionieren.
Lass hören, ob ok.
Dirk aus Dubai
AW: Select Case... Case Else Problem
05.12.2022 15:37:34
Gula
Hallo Dirk danke für den Beitrag. Ich habe das mal so umgesetzt und komme zum gleichen Ergebnis wie der Vorschlag von Yal.
Daher kopiere ich hier die Antwort, welche bereits bei Yal seinem Beitrag, geschrieben habe.
... nun ist es so, dass er die ersten beiden Zellen von allen markierten in der richtigen Farbe färbt, aber die restlichen weiterhin in der rZelle.Interior.Color = RGB(248, 203, 173) einfärbt. Zumindest schon einmal ein Teilerfolg. Anscheinend wird rZelle nicht als Selection.Cells interpretiert.
Das er die ersten Beiden nur färbt, liegt an dem Makro für die Namenseingabe Fzg_name_insert, da ich damit festgelegt habe, dass er den Wert immer an zweiter Stelle schreiben soll.

Sub FzgName_Insert()
Dim sTxt As String
sTxt = InputBox("Bitte Funkrufnamen benennen:" & Chr(13) & "Abbrechen leert die ausgewählten Zellen")
'If sTxt = "" Then Exit Sub
Selection.Cells(2).Value = sTxt
End Sub
Dort die 2 hinter Selection.Cells
Anzeige
AW: Select Case... Case Else Problem
05.12.2022 15:05:30
Gula
Um ehrlich zu sein, kamen diese Codezeilen nicht von mir. ;-)
AW: Select Case... Case Else Problem
05.12.2022 15:21:28
ralf_b
um ehrlich zu sein? das wird hier erwartet. Wie soll man mit Jemandem kommunizieren, der vielleicht gar nicht versteht was und wo in seinem Code abgeht.
Mit ist nich aufgefallen.
Selection.cells(2).Value = sTxt im FzgName_Insert()
Die Nummer wird in die 2.te Zelle der Zellauswahl eingetragen. Wählst du denn immer mehrere Zellen aus?
Anzeige
AW: Select Case... Case Else Problem
05.12.2022 15:40:48
Gula
Naja, so grob verstehe ich die Codes dann schon, könnte aber selber keine schreiben, bzw. die "komplizierteren".
Das der Text immer in die zweite Zelle geschrieben wird ist so gewollt.
Es werden immer unterschiedlich viele Zellen markiert, ja.
AW: Select Case... Case Else Problem
05.12.2022 15:35:42
Rudi
Hallo,

Sub FzgFärben()
Dim rZelle As Range
For Each rZelle In Selection.Cells
Select Case Right(rZelle, 2)
Case "22", "24", "27"
UserForm1.Show
Case "01"
Selection.Interior.Color = RGB(255, 255, 0)      '31/01
Case Else
Selection.Interior.Color = RGB(248, 203, 173)    'Allgemein
End Select
Next
End Sub
ich würde allerdings
1. den Input in die erste Zelle der Auswahl schreiben.
2. FzgFärben mit dem Input aufrufen statt durch die gesamte Auswahl zu schleifen.

'Namenseingabe
Sub FzgName_Insert()
Dim sTxt As String
sTxt = InputBox("Bitte Nummer benennen:" & Chr(13) & "Abbrechen leert die ausgewählten Zellen")
If sTxt  "" Then
Selection.Cells(1).Value = sTxt
Call FzgFärben(sTxt)
End If
End Sub
'Zellen färben
Sub FzgFärben(ByVal sText As String)
Select Case Right(sText, 2)
Case "22", "24", "27"
UserForm1.Show
Case "01"
Selection.Interior.Color = RGB(255, 255, 0)      '31/01
Case Else
Selection.Interior.Color = RGB(248, 203, 173)    'Allgemein
End Select
End Sub
fzgFärben aus _BerforeRightclick raus.
Gruß
Rudi
Anzeige
AW: Select Case... Case Else Problem
05.12.2022 17:51:11
Gula
Hallo Rudi, danke für deine Arbeit. Ich hab beides mal umgesetzt. Bei beiden Versionen färbt er nur noch in der einen Farbe, welche bei einem willkürlichen Text kommen soll.
Zudem brauch ich bei meiner Benennung zwingend die Platzhalter vor und nach der Eingabe, da die Zahlen in unterschiedlichen Varianten auftreten können.
Also "*22*" muss so bleiben, da manchmal die Eingabe "21/22" ist oder "2122" oder "2122 plus einen Text" usw. Also sobald 22 vorkommt, in der passenden Farbe färben, bzw. in diesem Fall erstmal UserForm1 laden.
Grüße
AW: Select Case... Case Else Problem
06.12.2022 10:11:57
Rudi
Hallo,
bei mir laufen beide Versionen korrekt.
Mit Patzhalter dann doch wieder mit LIKE.

Sub FzgFärben()
Dim rZelle As Range
For Each rZelle In Selection.Cells
Select Case True
Case rZelle Like "*22*", rZelle Like "*24*", rZelle Like "*27*"
UserForm1.Show
Case rZelle Like "*01*"
Selection.Interior.Color = RGB(255, 255, 0)      '31/01
Case Else
Selection.Interior.Color = RGB(248, 203, 173)    'Allgemein
End Select
Next
End Sub
Gruß
Rudi
Anzeige
AW: Select Case... Case Else Problem
06.12.2022 11:33:57
Gula
Hallo Rudi und danke für den Code.
Ich habe deinen obigen Code in die Datei eingefügt, welche ich hier gepostet habe.
Also bei mir ist es so, dass er mit diesem Code, egal welche Eingabe man macht, er die RGB Farbe 248, 203, 173 nimmt.
Also die, die er nehmen soll, wenn keine der Bedingungen vorher zutrifft.
Mach ich was falsch?
Grüße
AW: Select Case... Case Else Problem
06.12.2022 12:04:56
Rudi
Hallo,
eigentlich klar. Durch die Schleife über alle Zellen wird logischerweise auch mal was gefunden (Leerzelle), das nicht den anderen Kriterien entspricht.
Ergo mit Übergabe des eingegebenen Textes:

'Namenseingabe
Sub FzgName_Insert()
Dim sTxt As String
sTxt = InputBox("Bitte Nummer benennen:" & Chr(13) & "Abbrechen leert die ausgewählten Zellen")
If sTxt = "" Then Exit Sub
Selection.Cells(2).Value = sTxt
Call FzgFärben(sTxt)
End Sub
Sub FzgFärben(strText As String)
Select Case True
Case strText Like "*22*", strText Like "*24*", strText Like "*27*"
UserForm1.Show
Case strText Like "*01*"
Selection.Interior.Color = RGB(255, 255, 0)      '31/01
Case Else
Selection.Interior.Color = RGB(248, 203, 173)    'Allgemein
End Select
End Sub
Aus Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) den Aufruf von FzgFärben löschen!!!
Gruß
Rudi
Anzeige
AW: Select Case... Case Else Problem
06.12.2022 12:40:23
Gula
Rudi, ich danke vielmals!!!
Jetzt funktionierts wie es soll.. Pefekt.

17 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige