Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1040to1044
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

Bedingte Formatierung mit VBA-Modul

Bedingte Formatierung mit VBA-Modul
19.01.2009 18:03:57
Fuhrer
Hallo zusammen
Ich will mit einem VBA-Modul einen bestimmten Bereich nach definierten Kriterien einfärben.
Das Modul wird später einem Comnand-Button Zugeordent (dies ist für mich kein Problem).
Nun konnte ich im Internet ein entprechendes Makro finden. Jedoch ist dieses Makro nur für eine Spalte
vorgesehen (Siehe Beispiel unten). Ich konnte dieses Makro zwar auf eine weitere Spalte erweitern, doch scheint mir diese Variante als sehr umständlich, da ich dieses Makro voraussichtlich für 130 Spalten benötige. Der Makro-Code würde dadaurch auch viel zu lang und unüberschaubar werden.
Ich wäre sehr dankbar, wenn mir jemand den Code für mein Vorhabe entsprechend anpassen oder wenigstens ein Tip geben könnte.

Sub BedingteFormatierung()
Dim Z1, Z2, Z3, Z4, Z5 As Integer
Dim F1, F2, F3, F4, F5 As String
Z1 = 50 'grün
F1 = 4
Z2 = 40 'gelb
F2 = 6
Z3 = 25 'rot
F3 = 3
Z4 = 15 'blau
F4 = 5
Z5 = 0 'grau
F5 = 15
Columns("A:B").Select 'Alte Farben entf.
Selection.Interior.ColorIndex = xlNone
'Spalte A
[A2].Select 'Neue Markierungen setzen
Do Until IsEmpty(ActiveCell.Value)
If ActiveCell.Value = Z1 Then
ActiveCell.Interior.ColorIndex = F1
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z2 Then
ActiveCell.Interior.ColorIndex = F2
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z3 Then
ActiveCell.Interior.ColorIndex = F3
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z4 Then
ActiveCell.Interior.ColorIndex = F4
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z5 Then
ActiveCell.Interior.ColorIndex = F5
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
'Spalte B
[B2].Select 'Neue Markierungen setzen
Do Until IsEmpty(ActiveCell.Value)
If ActiveCell.Value = Z1 Then
ActiveCell.Interior.ColorIndex = F1
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z2 Then
ActiveCell.Interior.ColorIndex = F2
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z3 Then
ActiveCell.Interior.ColorIndex = F3
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z4 Then
ActiveCell.Interior.ColorIndex = F4
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z5 Then
ActiveCell.Interior.ColorIndex = F5
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
'Spalte C usw.
[A1].Select
End Sub


Vielen Dank für eure Hilfe
Gruss
Stefan Fuhrer

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Hier der etwas modifizierte Code!
19.01.2009 18:44:37
Backowe
Hallo Stefan,
probiere es mal so:
VBA-Code:
Sub BedingteFormatierung()
Dim Zelle As Range
Dim Zeile As Long
Dim Spalte As Integer
Dim Z1, Z2, Z3, Z4, Z5 As Integer
Dim F1, F2, F3, F4, F5 As String
Z1 = 50 'grün
F1 = 4
Z2 = 40 'gelb
F2 = 6
Z3 = 25 'rot
F3 = 3
Z4 = 15 'blau
F4 = 5
Z5 = 0 'grau
F5 = 15
Zeile = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Spalte = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
Cells.Interior.ColorIndex = xlNone
For Each Zelle In Range(Cells(2, "A"), Cells(Zeile, Spalte))
  If Zelle <> "" Then
    With Zelle
      Select Case Zelle
        Case Z1
          .Interior.ColorIndex = F1
        Case Z2
          .Interior.ColorIndex = F2
        Case Z3
        .Interior.ColorIndex = F3
        Case Z4
          .Interior.ColorIndex = F4
        Case Z5
        .Interior.ColorIndex = F5
        Case Else
          .Interior.ColorIndex = xlNone
      End Select
    End With
  End If
Next
End Sub
Gruß Jürgen
AW: Bedingte Formatierung mit VBA-Modul
Daniel

HI
der Code ist sowieso viel zu umständlich.
so könnte das schneller gehen:

Sub BedingteFormatierung()
Dim Z1, Z2, Z3, Z4, Z5 As Integer
Dim F1, F2, F3, F4, F5 As Integer
dim Zelle as range
Z1 = 50 'grün
F1 = 4
Z2 = 40 'gelb
F2 = 6
Z3 = 25 'rot
F3 = 3
Z4 = 15 'blau
F4 = 5
Z5 = 0 'grau
F5 = 15
Columns("A:B").Interior.ColorIndex = xlNone 'Alte Farben entf.
for each Zelle in Intersect(Range("A:B"), activesheet.usedrange)
select case Zelle.Value
case Z1
Zelle.Interior.ColorIndex = F1
case Z2
Zelle.Interior.ColorIndex = F2
case Z3
Zelle.Interior.ColorIndex = F3
case Z4
Zelle.Interior.ColorIndex = F4
case Z5
Zelle.Interior.ColorIndex = F5
Case else
End select
end sub 


gruß, Daniel

AW: Bedingte Formatierung mit VBA-Modul
hary

Hallo Stafan
meinst Du so was. Bereich noch anpassen.
https://www.herber.de/bbs/user/58593.xls
Gruss hary
AW: Bedingte Formatierung mit VBA-Modul
Josef

Hallo Namenloser,
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub BedingteFormatierung()
    Dim Z1, Z2, Z3, Z4, Z5 As Integer
    Dim F1, F2, F3, F4, F5 As Integer
    Dim rngAll As Range, rngCells As Range, rng As Range
    
    Z1 = 50 'grün
    F1 = 4
    Z2 = 40 'gelb
    F2 = 6
    Z3 = 25 'rot
    F3 = 3
    Z4 = 15 'blau
    F4 = 5
    Z5 = 0 'grau
    F5 = 15
    
    Set rngAll = Columns("A:B") 'Spalten hier angeben!
    
    rngAll.Interior.ColorIndex = xlNone
    
    On Error Resume Next
    Set rngCells = rngAll.SpecialCells(xlCellTypeConstants, 1)
    On Error GoTo 0
    
    If Not rngCells Is Nothing Then
        For Each rng In rngCells
            Select Case rng.Value
                Case Z1
                    rng.Interior.ColorIndex = F1
                Case Z2
                    rng.Interior.ColorIndex = F2
                Case Z3
                    rng.Interior.ColorIndex = F3
                Case Z4
                    rng.Interior.ColorIndex = F4
                Case Z5
                    rng.Interior.ColorIndex = F5
                Case Else
            End Select
        Next
    End If
    
    Set rngAll = Nothing
    Set rngCells = Nothing
    Set rng = Nothing
End Sub

Gruß Sepp

AW: Bedingte Formatierung mit VBA-Modul
Stefan

Hallo zusammen
Vielen Dank für eure Beispiele. Ich hätte nicht gedacht, dass ich so schnell auf eure Unterstützung zählen kann. Genau so wie in euren Beispielen habe ich's mir vorgestellt. Dank euch kann ich nun mein Projekt fortsetzen.
Gruss
Stefan
Anzeige
AW: Bedingte Formatierung mit VBA-Modul
19.01.2009 18:49:00
Daniel
HI
der Code ist sowieso viel zu umständlich.
so könnte das schneller gehen:

Sub BedingteFormatierung()
Dim Z1, Z2, Z3, Z4, Z5 As Integer
Dim F1, F2, F3, F4, F5 As Integer
dim Zelle as range
Z1 = 50 'grün
F1 = 4
Z2 = 40 'gelb
F2 = 6
Z3 = 25 'rot
F3 = 3
Z4 = 15 'blau
F4 = 5
Z5 = 0 'grau
F5 = 15
Columns("A:B").Interior.ColorIndex = xlNone 'Alte Farben entf.
for each Zelle in Intersect(Range("A:B"), activesheet.usedrange)
select case Zelle.Value
case Z1
Zelle.Interior.ColorIndex = F1
case Z2
Zelle.Interior.ColorIndex = F2
case Z3
Zelle.Interior.ColorIndex = F3
case Z4
Zelle.Interior.ColorIndex = F4
case Z5
Zelle.Interior.ColorIndex = F5
Case else
End select
end sub 


gruß, Daniel

Anzeige
AW: Bedingte Formatierung mit VBA-Modul
19.01.2009 19:01:00
Josef
Hallo Namenloser,
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub BedingteFormatierung()
    Dim Z1, Z2, Z3, Z4, Z5 As Integer
    Dim F1, F2, F3, F4, F5 As Integer
    Dim rngAll As Range, rngCells As Range, rng As Range
    
    Z1 = 50 'grün
    F1 = 4
    Z2 = 40 'gelb
    F2 = 6
    Z3 = 25 'rot
    F3 = 3
    Z4 = 15 'blau
    F4 = 5
    Z5 = 0 'grau
    F5 = 15
    
    Set rngAll = Columns("A:B") 'Spalten hier angeben!
    
    rngAll.Interior.ColorIndex = xlNone
    
    On Error Resume Next
    Set rngCells = rngAll.SpecialCells(xlCellTypeConstants, 1)
    On Error GoTo 0
    
    If Not rngCells Is Nothing Then
        For Each rng In rngCells
            Select Case rng.Value
                Case Z1
                    rng.Interior.ColorIndex = F1
                Case Z2
                    rng.Interior.ColorIndex = F2
                Case Z3
                    rng.Interior.ColorIndex = F3
                Case Z4
                    rng.Interior.ColorIndex = F4
                Case Z5
                    rng.Interior.ColorIndex = F5
                Case Else
            End Select
        Next
    End If
    
    Set rngAll = Nothing
    Set rngCells = Nothing
    Set rng = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Bedingte Formatierung mit VBA-Modul
19.01.2009 20:58:45
Stefan
Hallo zusammen
Vielen Dank für eure Beispiele. Ich hätte nicht gedacht, dass ich so schnell auf eure Unterstützung zählen kann. Genau so wie in euren Beispielen habe ich's mir vorgestellt. Dank euch kann ich nun mein Projekt fortsetzen.
Gruss
Stefan

328 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige