Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: "Ganze Spalte formatieren per VBA"

"Ganze Spalte formatieren per VBA"
03.11.2006 08:47:04
Fabio
Hallo zusammen,
Ich würde gerne per VBA/Script folgendes Erreichen :
Wenn in einer Spalte in der Zeile 22 der Buchstabe "KP" steht
dann formatiere die Zeilen 22-149 blau" UND eine Gültigkeitsprüfung
erfolgen, die hier eine Fehlermeldung bei Eintrag in diese Zelle bringt
(Kein Eintragzulässig - ist KP-Bereich)
(Beispiel in C22 steht "KP" - dann sollte C22-C149 blauen Hintergrund haben, und wenn man dann was in die Spalte eingeben will, sollte die o.g. Fehlermeldung kommen)
Kann mir jemand hier ein Script schreiben? Mir gehts es vor allem darum, das ich die Systematik verstehe - und ich das dann entsprechend anpassen kann.
Oder mache ich das viel einfacher für jede Spalte mit Bed.-Formatierung/Gültigkeitsprüfung ?
Vielen Dank !
Fabio
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: "Ganze Spalte formatieren per VBA"
03.11.2006 10:21:04
sepp
hallo fabio,
solls nun vba sein?
ich würde es mit gültigkeitsprüfung und bedingter formatierung machen.
gruß
sepp
..per VBA
03.11.2006 10:40:15
Fabio
Servus,
na ich wollte wissen, ob das evtl. EINFACHER per VBA ist.
Grüße
Oliver
AW: "Ganze Spalte formatieren per VBA"
04.11.2006 00:29:29
Daniel
Hallo
das mit dem Färben lässt sich auch per bedingter Formatierung lösen.
ob die VBA-Lösung dazu besser ode leichter ist, hängt davon ab, was du sonst noch so mit Eventgesteuerten Makros oder anderen Bedingten Formatierungen machts, es sollte sich halt nicht in die Quere kommen.
(Wenn du zum Beispiel schon Rahmnlinien mit Bed. Format ziehst, solltest du das Blau-Färben nicht auch noch damit machen, weil in einer Zelle nur eine der drei bed. Formatierungen gleichzeitig aktiv sein kann.)
Auch wüsste ich nicht, das sich eine Gügtigkeit in abhängigkeit von bestimmten Zellwerten programmiern lässt (es sei denn, du bekommst da mit dynamischen Namen was hin).
Ansonsten halt hier der Code, einzutragen im Codebereich der Tabelle:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Dim Check As Range
Set Bereich = Range(Cells(23, Target.Column), Cells(140, Target.Column))
Set Check = Cells(22, Target.Column)
If Target.Address = Check.Address Then
Select Case Target.Value
Case "KP"
Bereich.Interior.ColorIndex = 5
Target.Interior.ColorIndex = 5
Case Else
Bereich.Interior.ColorIndex = -4142
Target.Interior.ColorIndex = -4142
End Select
End If
If Not (Intersect(Bereich, Target) Is Nothing) Then
Select Case Check.Value
Case "KP"
MsgBox ("KP-Bereich, kein Eintrag möglich")
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
Case Else
End Select
End If
End Sub

Gruß, Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Ganze Spalte formatieren per VBA


Schritt-für-Schritt-Anleitung

Um eine ganze Spalte in Excel per VBA zu formatieren und eine Gültigkeitsprüfung einzurichten, kannst du den folgenden VBA-Code verwenden. Dieser Code färbt die Zeilen 22 bis 149 blau, wenn in der Zelle C22 der Wert "KP" steht. Außerdem wird eine Fehlermeldung angezeigt, wenn du versuchst, in diese Zellen etwas einzutragen.

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Wähle das entsprechende Arbeitsblatt im Projektfenster aus.
  3. Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bereich As Range
    Dim Check As Range
    Set Bereich = Range(Cells(23, Target.Column), Cells(140, Target.Column))
    Set Check = Cells(22, Target.Column)

    If Target.Address = Check.Address Then
        Select Case Target.Value
            Case "KP"
                Bereich.Interior.ColorIndex = 5
                Target.Interior.ColorIndex = 5
            Case Else
                Bereich.Interior.ColorIndex = -4142
                Target.Interior.ColorIndex = -4142
        End Select
    End If

    If Not (Intersect(Bereich, Target) Is Nothing) Then
        Select Case Check.Value
            Case "KP"
                MsgBox ("KP-Bereich, kein Eintrag möglich")
                Application.EnableEvents = False
                Target.ClearContents
                Application.EnableEvents = True
            Case Else
        End Select
    End If
End Sub
  1. Schließe den VBA-Editor und teste die Funktionalität in deinem Arbeitsblatt.

Häufige Fehler und Lösungen

  • Fehler: Der Code funktioniert nicht.

    • Lösung: Stelle sicher, dass der Code im richtigen Arbeitsblatt-Modul eingefügt wurde und dass die Makros aktiviert sind.
  • Fehler: Die bedingte Formatierung funktioniert nicht wie gewünscht.

    • Lösung: Überprüfe, ob andere bedingte Formatierungen in Konflikt stehen. Eine Zelle kann nur eine von drei bedingten Formatierungen gleichzeitig aktiv haben.

Alternative Methoden

Anstatt VBA zu verwenden, kannst du auch die bedingte Formatierung nutzen, um die Zellen basierend auf dem Wert in einer anderen Zelle zu formatieren. Hier sind die Schritte:

  1. Markiere den Bereich von C22 bis C149.
  2. Gehe zu „Start“ > „Bedingte Formatierung“ > „Neue Regel“.
  3. Wähle „Formel zur Ermittlung der zu formatierenden Zellen verwenden“.
  4. Gib folgende Formel ein: =$C$22="KP".
  5. Wähle das Format (z.B. Hintergrundfarbe blau) und klicke auf „OK“.

Die Gültigkeitsprüfung kannst du ebenfalls über die Datenvalidierung einrichten.


Praktische Beispiele

Wenn du den oben genannten VBA-Code in einer Excel-Tabelle anwendest, wird bei Eingabe von "KP" in C22 der gesamte Bereich von C22 bis C149 blau gefärbt. Versuche, einen anderen Wert in diesen Bereich einzugeben, und du erhältst die Fehlermeldung, die den Eintrag verbietet. Dies ist besonders nützlich zur Datenvalidierung.


Tipps für Profis

  • Nutze die Application.EnableEvents-Eigenschaft, um unbeabsichtigte Rekursionen zu vermeiden, wenn du den Zellinhalt änderst.
  • Experimentiere mit verschiedenen Farb-Indexwerten, um eine breitere Farbpalette für deine Formatierungen zu erhalten.
  • Überlege dir, wie du dynamische Namensbereiche nutzen kannst, um die Gültigkeitsprüfung flexibler zu gestalten.

FAQ: Häufige Fragen

1. Frage
Wie kann ich den Code anpassen, um eine andere Spalte zu verwenden?
Antwort: Ändere einfach die Referenzen im Code von C auf die gewünschte Spalte, z.B. D für die Spalte D.

2. Frage
Funktioniert dieser Code in Excel 2016 und 2019?
Antwort: Ja, der Code sollte in Excel 2016, 2019 sowie in Excel für Microsoft 365 ohne Probleme funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige