Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
976to980
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
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bedingte Formatierungen

Bedingte Formatierungen
19.05.2008 17:45:52
jorgen
Liebe VBA Profis.
noch immer kämpfe ich mit dem Thema bedingte Formatierungen in einer Soll/-Ist Übersicht. Zu diesem Thema habe ich schon super Beiträge bekommen, mein Problem hat das leider noch nicht ganz gelöst.
Der angefragte Makro dient dazu, immer zusammengehörige zellen hervorzuheben, wenn eine der Zellen markiert wird (hier genutzt zur Kenntlichmachung von Plan- und Ist Zahlen).
Beispiel unter https://www.herber.de/bbs/user/51980.xls
Nach einer ersten Korrektur kann ich auch wieder die "Einfügen" (Paste) Funktion nutzen.
Leider funktioniert nun die bedingte Formatierung nicht mehr, bzw. sie wird immer dann gelöscht, wenn eine Zelle markiert wurde.
anbei die erste Syntax, die fast funktioniert hat:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strSuch As String, Zelle As Range, Bere As Range
Application.ScreenUpdating = False
If Application.CutCopyMode = False Then
Cells.FormatConditions.Delete
For Each Bere In Selection
strSuch = Cells(Bere.Row, 1)
Set Zelle = Range("A:A").Find(what:=strSuch, after:=Cells(Bere.Row, 1))
If Not Zelle Is Nothing And Zelle.Address  Cells(Bere.Row, 1).Address Then
Set Zelle = Cells(Zelle.Row, Bere.Column)
Zelle.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="0"
Zelle.FormatConditions(1).Interior.ColorIndex = 37
End If
Next Bere
End If
Application.ScreenUpdating = True
End Sub


Ein zweiter VBA Profi hat mir dann folgende Lösung bieten können:
Public FormatAlt As String
Public AdresseAlt As String


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strSuch As String, Zelle As Range, Bere As Range
Application.ScreenUpdating = False
If Application.CutCopyMode = False Then
On Error Resume Next
Range(AdresseAlt).Interior.ColorIndex = FormatAlt
On Error GoTo 0
For Each Bere In Selection
strSuch = Cells(Bere.Row, 1)
Set Zelle = Range("A:A").Find(what:=strSuch, after:=Cells(Bere.Row, 1))
If Not Zelle Is Nothing And Zelle.Address  Cells(Bere.Row, 1).Address Then
Set Zelle = Cells(Zelle.Row, Bere.Column)
FormatAlt = Zelle.Interior.ColorIndex
AdresseAlt = Zelle.Address
Zelle.Interior.ColorIndex = 37
End If
Next Bere
End If
Application.ScreenUpdating = True
End Sub


... das klappte schon ganz gut, nur bleibt die Formatierung der Zellen bestehen, wenn mehrere Zellen auf einmal markiert werden. Sicher nur eine Kleinigkeit.
Perfekt wäre die Lösung, wenn man zusätzlich noch über einen Button die Bedingte Formatierung an und ausschalten könnte. Das wäre ja an sich auch über einen aufgezeichneten Makro zu lösen, allerdings handelt es sich um so viele Formatierungen, dass das Aufzeichnen des Makros sehr sehr aufwändig wäre und er bei jeder Änderung neu programmiert werden müsste.
1000 Dank für eure Hilfe, ich bin schon jetzt begeistert davon, welche Möglichkeiten Excel mit VBA Lösungen bietet und wie hilfsbereit die User in diesem Forum sind.
Gruß
Jorgen

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierungen
19.05.2008 20:39:00
Cathy
Hallo Jorgen,
ich habe eine andere Möglichkeit gefunden, bin mir aber nicht sicher, ob Du in jedem Fall mit einer Bedingten Formatierung arbeiten möchtest. Schau es Dir einfach mal an.
Was hier noch fehlt:
zu Beginn des Makros ist der obere Teil in der Farbe wieder auf den Standard zurückzusetzen!
Hier also das Makro:


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim strSuch As String
Dim intR As Integer, intAR As Integer
Dim intFC As Integer, intLC As Integer
' Makro nur ausführen, wenn sich der markierte Bereich unterhalb der oberen     .
' Tabelle befindet                                                              .
If Target.Row  Abbruch   .
strSuch = Cells(Selection.Row, 1).Value
If InStr(1, strSuch, "Produkt", vbTextCompare) = 0 Then Exit Sub
' Suchstring im oberen Teil der Tabelle suchen                                  .
intR = WorksheetFunction.Match(strSuch, Columns("A:A"), 0)
' entsprechenden Bereich farbig unterlegen                                      .
Range(Cells(intR, intFC), Cells(intR, intLC)).Interior.ColorIndex = 37
' wieder zum ursprünglichen Bereich zurückkehren                                .
Range(Cells(intAR, intFC), Cells(intAR, intLC)).Select
End Sub


Freundliche Grüße
Karin

Anzeige
AW: Bedingte Formatierungen
20.05.2008 17:33:00
jorgen
Merci! Besonderen Dank auch für die Bereichsbeschriftungen. Super zum verstehen der Materie.

Was hier noch fehlt:
zu Beginn des Makros ist der obere Teil in der Farbe wieder auf den Standard zurückzusetzen!


Wenn ich das richtig verstanden habe, bleibt die zu der markierten Zelle zugehörige Ziel-Zelle in der Signalfarbe formatiert, auch nachdem wieder eine andere Zelle markiert wird.
Hmm ... da ich kaum VBA Kenntnisse habe wüsste ich nicht, wie das zu lösen ist, zumal die bedingten Formatierungen schon sehr wichtig wären.
Ich probiers mal aus aber danke schonmal für weitere Hilfe!
Joerg

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige