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