Microsoft Excel

Herbers Excel/VBA-Archiv

bed. Formatierung mittels VBA | Herbers Excel-Forum


Betrifft: bed. Formatierung mittels VBA von: Frank H.
Geschrieben am: 20.01.2010 13:20:21

Hallo Zusammen!!!

Wie immer bin ich wieder einmal mit mein Latein am Ende, hoffe auf eure Hilfe.

In Spalte E5:E310 steht immer ein Datum. Es handelt sich immer um Freitage, Samstage, Sonntage und Montage. Das ist f. d. bed. Formatierung in 2003 einer zuviel! Ich möchte das wenn das Datum ein Freitag ist soll die Schriftfarbe weinrot sein, Samstag blau, Sonntag rot und Montag dunkellila. Das ganze wollte ich hinter einen Button legen und am Ende der Erstellung der Daten auf Klick formatieren!

Ich hoffe ihr könnt mein Problem verstehen und mir eine Lösung anbieten!!! Vielen Dank im Vorraus!

Gruß Frank H.

  

Betrifft: so geht das von: Björn B.
Geschrieben am: 20.01.2010 13:38:30

Hallo Frank,

mit diesem Code klappt das:

Sub Farben()
Dim Zeile As Integer

Range("E5:E310").Font.ColorIndex = xlAutomatic

  For Zeile = 5 To 310
    Select Case Weekday(Cells(Zeile, 5), 1)
      Case 6 'Freitag
        Cells(Zeile, 5).Font.ColorIndex = 9
      Case 7 'Samstag
        Cells(Zeile, 5).Font.ColorIndex = 5
      Case 1 'Sonntag
        Cells(Zeile, 5).Font.ColorIndex = 3
      Case 2 'Montag
        Cells(Zeile, 5).Font.ColorIndex = 13
    End Select
  Next Zeile
    
End Sub
Auf deinem Blatt einen Commandbutton erzeugen und das diese MAkro zuweisen.

Gruß
Björn B.


  

Betrifft: AW: so geht das von: Frank H.
Geschrieben am: 20.01.2010 14:00:24

Hallo Björn!

Danke, funzt Super. Wie kann ich aber die Fehlermeldung "Typen unverträglich" abfangen, wenn in Spalte E5:E310 Zellen noch leer sind? Vielleicht weißt du auch hier noch Rat!

Gruß Frank H.


  

Betrifft: AW: so geht das von: Björn B.
Geschrieben am: 20.01.2010 14:08:45

Hallo,

also auf die Schnelle "unschön" programmiert (einfach bei Dir erweitern):

    On Error Resume Next
    Select Case Weekday(Cells(Zeile, 5), 1)
    On Error GoTo 0
Schöner wäre es, wenn man in ner If-Schleife das ganze prüft und abfängt.
Aber so funktionioert es. Ich bin da Minimalist und will keine Schönheitswettbewerbe gewinnen ;-)
Wenn es sich allerdings um eine größere VBA-Anwendung handelt, die mit Fehlerbehandlung arbeitet, dann sollte man das nicht so machen.

Gruß
Björn B.


  

Betrifft: AW: so geht das von: Björn B.
Geschrieben am: 20.01.2010 14:08:45

Hallo,

also auf die Schnelle "unschön" programmiert (einfach bei Dir erweitern):

    On Error Resume Next
    Select Case Weekday(Cells(Zeile, 5), 1)
    On Error GoTo 0
Schöner wäre es, wenn man in ner If-Schleife das ganze prüft und abfängt.
Aber so funktionioert es. Ich bin da Minimalist und will keine Schönheitswettbewerbe gewinnen ;-)
Wenn es sich allerdings um eine größere VBA-Anwendung handelt, die mit Fehlerbehandlung arbeitet, dann sollte man das nicht so machen.

Gruß
Björn B.


  

Betrifft: AW: so geht das von: Luschi
Geschrieben am: 20.01.2010 14:52:02

Hallo Frank,

mach es so:

Sub Farben()
  Dim Zeile As Integer
  Range("E5:E310").Font.ColorIndex = xlAutomatic
    
  For Zeile = 5 To 310
    'Datentyp der Zelle prüfen
    If VarType(Cells(Zeile, 5)) = vbDate Then
       Select Case Weekday(Cells(Zeile, 5), 1)
          Case 6 'Freitag
            Cells(Zeile, 5).Font.ColorIndex = 9
          Case 7 'Samstag
            Cells(Zeile, 5).Font.ColorIndex = 5
          Case 1 'Sonntag
            Cells(Zeile, 5).Font.ColorIndex = 3
          Case 2 'Montag
            Cells(Zeile, 5).Font.ColorIndex = 13
       End Select
     End If
  Next Zeile
End Sub
Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: so geht das von: Frank H.
Geschrieben am: 20.01.2010 15:35:36

Hallo Ihr zwei fleißigen Helfer!!!

Funzt nun super!!! Ihr, sowie das gesamte Forum wie immer Spitze!!!

Danke und Gruß Frank H.


Beiträge aus den Excel-Beispielen zum Thema "bed. Formatierung mittels VBA"