Microsoft Excel

Herbers Excel/VBA-Archiv

EXCEL Zellenformatierung per Liste (Makro) und vi

Betrifft: EXCEL Zellenformatierung per Liste (Makro) und vi von: Robert B.
Geschrieben am: 29.09.2014 23:37:12

Hallo zusammen,

ich habe eine Liste per Datenüberprüfung erstellt welche die Werte 1-5 enthält. Zudem ist eine leere Selektion innerhalt der Liste möglich. Wird Wert 1 in der Liste selektiert lasse ich per vorher aufgenommenem Makro die Zelle A3 schwarz umranden und orange befüllen. Wird Wert 2 in der Liste selektiert wird nebst Zelle A3 auch Zelle A4 gleichermaßen formatiert. Selbiges Prozedere erfolgt bei der Selektion der anderen Datenwerte, d.h. maximal sind die Zellen A3:A7 wie vorher beschrieben formatiert.

Mein Problem besteht jetzt in der Rückwärtsformatierung, wenn man es denn so nennen mag. Ein User selektiert nun den Datenwert 5 und A3:A7 sind formatiert. Selektiert der User aber nun den leeren Datenwert oder einen niedrigeren als 5 bleiben dennoch alle zuvor formatierten Zellen in der Formatierung bestehen.

Wie kann ich EXCEL/VBA dazu bewegen die überschüssigen Zellen wieder zum Ausgangsformat zurückzuformatieren bzw. überhaupt zu erkennen und nur die Zellen entsprechend des selektierten Datenwertes in der entsprechenden Formatierung beizubehalten.

Beispiel:

Datenwert 5 selektiert A3:A7 formatiert
danach Datenwert 3 selektiert A3:A5 formatiert (bzw. bleiben formatiert) und A6:A7 ins Standardzellenformat zurückformatiert

Ich hoffe ihr könnt mir hier weiterhelfen
mfG
Robert

  

Betrifft: Aber sicher, ... von: Luc:-?
Geschrieben am: 30.09.2014 04:38:18

…Robert;
doch vergiss dein Pgm und färbe die potenziellen AuswahlZellen per BedingtFormatierung!
Dazu legst du zuerst 2 Namen (hier der Mappe) an, dem einen (→Auswahl) ordnest du im Bezug den Wert 0, dem anderen (→AwListe) deinen ListenBereich zu. Anschließend selektierst du den zu färbenden Bereich und schreibst als Regel lt 6.MenüPkt die Fml: =ZEILE()=Auswahl+2
Zuletzt legst du noch die EreignisProzedur SelectionChange für das gegebene Blatt an:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Const naRelBer$ = "AwListe", naRelKonst$ = "Auswahl"
    If Target.Count = 1 And Not Intersect(Target, Me.Range(naRelBer)) Is Nothing Then _
        Me.Parent.Names(naRelKonst).Value = IIf(IsEmpty(Target), 0, Target)
End Sub
Damit ist gewährleistet, dass sich nur die ausgewählte Zelle färbt. Wird die Leerzelle gewählt, wird die Konstante auf 0, sonst auf den ausgewählten Listenwert gestellt. Die Auswahl irgendeiner anderen Zelle (außerhalb der Liste) hat keine Auswirkungen (die korrespondierende der zuletzt ausgewählten ListenZelle behält ihre Formatierung).
Das Pgm ist so eingestellt, dass stets nur eine Zelle markiert wdn kann.
Morrn, Luc :-?


  

Betrifft: Falls du allerdings nur mit 1 EingabeZelle und ... von: Luc:-?
Geschrieben am: 30.09.2014 08:53:24

…einer GültigkeitsListe Leer/1…5 arbeitest, Robert,
diese (aus deiner Frage herauslesbare) Möglichkeit ist mir etwas untergegangen, kannst du entweder analog, aber mit Worksheet_­Change, oder ganz ohne VBA arbeiten, indem du statt einer Konstante für Auswahl hier auf die Eingabe­Zelle beziehst.
Mein letzter Vorschlag ist wohl der mit Abstand eleganteste, denn dabei brauchst du weder VBA noch irgend­welches Zurück­setzen der Zell­farbe und -rahmen, was ohnehin kontra­produktiv bei einer anderen Zell-Grund­farbe als ungefärbt-weiß wäre, woran Daniel (gern andere Lösungen ignorierend) offensicht­lich nicht gedacht hat.
Luc :-?


  

Betrifft: AW: EXCEL Zellenformatierung per Liste (Makro) und vi von: Daniel
Geschrieben am: 30.09.2014 07:27:50

Hi

Am einfachsten, indem du zuerst in allen 5 Zellen das Format zurücksetzt und danach die Anzahl der ausgewählten Zellen formatierst.

Range("a3:a7").ClearFormats
Gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "EXCEL Zellenformatierung per Liste (Makro) und vi"