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

Code soll für die ganze AM funktionieren

Code soll für die ganze AM funktionieren
08.08.2022 14:01:27
Robert
Hallo liebe Exelgemeinde!
Bräuchte wieder mal Euer Wissen. Ich habe folgenden Code mit dem ich die aktuelle Zelle eines Arbeitsblattes andersfarbig und dann wird es wieder die Originalfarbe. Ich müsste den Code aber auf jedes Arbeitsblatt in einem separaten Modul einschreiben, um es anzuwenden.
Gibt es eine Möglichkeit das in das Modul "Diese Arbeitsmappe" zu integrieren, das für die ganze Arbeitsmappe funktioniert.

Option Explicit
Dim rngVorher As Range
Dim colVorher As Integer
Private Sub Worksheet_Deactivate()
If Not rngVorher Is Nothing Then rngVorher.Interior.ColorIndex = colVorher
Set rngVorher = Nothing
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Not rngVorher Is Nothing Then rngVorher.Interior.ColorIndex = colVorher
colVorher = Target.Interior.ColorIndex
Target.Interior.ColorIndex = 6  'Hintergrund Gelb
Set rngVorher = Target
End Sub
Ich Danke Euch im voraus.
LG Robert

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code soll für die ganze AM funktionieren
08.08.2022 14:09:00
Nepumuk
Hallo Robert,
im Modul "DieseArbeitsmappe"

Option Explicit
Private rngVorher As Range
Private colVorher As Long
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Not rngVorher Is Nothing Then rngVorher.Interior.Color = colVorher
Set rngVorher = Nothing
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Not rngVorher Is Nothing Then rngVorher.Interior.Color = colVorher
colVorher = Target.Interior.Color
Target.Interior.Color = vbYellow  'Hintergrund Gelb
Set rngVorher = Target
End Sub
ColorIndex solltest du im modernen Excel nicht mehr benutzen, da das nicht alle Schattierungen, die es gibt, darstellen kann.
Gruß
Nepumuk
Anzeige
AW: Code soll für die ganze AM funktionieren
08.08.2022 15:42:03
Robert
Hallo Nepumuk!
Der Code funktioniert gut. Noch zwei Probleme hätte ich noch. Wenn ich die Zelle wechsele dann wird der Rahmen entfernt. Könnte man das abstellen. Wäre es auch möglich das nach dem Speichern die Farbe der Hervorhebung wieder auf die Ursprungsfarbe der Zelle wechselt.
Wäre schön wenn Du Dir das mal anschauen könntest.
LG Robert.
AW: Code soll für die ganze AM funktionieren
08.08.2022 15:59:06
Nepumuk
Hallo Robert,
nach dem Speichern macht keinen Sinn. Daher vorher.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not rngVorher Is Nothing Then rngVorher.Interior.Color = colVorher
If Not SaveAsUI Then
Application.EnableEvents = False
Save
Application.EnableEvents = True
rngVorher.Interior.Color = vbYellow
Saved = True
Cancel = True
End If
End Sub
Das mit den Rahmen kann ich nicht nachvollziehen, habe es extra getestet. Die werden vom Makro gar nicht berührt.
Gruß
Nepumuk
Anzeige
AW: Code soll für die ganze AM funktionieren
08.08.2022 16:04:18
Rudi
Hallo,
wenn keine Farbe in der Zelle ist, enthält colVorher trotzdem den Wert 16777215 (weiß). Deshalb verschwindet auch der Rahmen um die Zelle.

 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Not rngVorher Is Nothing Then rngVorher.Interior.Color = colVorher
colVorher = IIf(Target.Interior.ColorIndex = xlNone, xlNone, Target.Interior.Color)
Target.Interior.Color = vbYellow  'Hintergrund Gelb
Set rngVorher = Target
End Sub
Gruß
Rudi
AW: Code soll für die ganze AM funktionieren
08.08.2022 16:08:10
Daniel
Hi
anderere Ansatz.
füge in das Selection_Change-Event (egal ob für Tabelle oder Mappe) nur diese beiden Codezeilen ein:

  ThisWorkbook.Names.Add "Zeile_aktuell", "=" & Target.Row
ThisWorkbook.Names.Add "Spalte_aktuell", "=" & Target.Column
richte dann für jedes Tabellenblatt, auf welchem du die Markierung haben willst, eine Bedingte Formatierung ein mit der Regel:

=Und(Zeile()=Zeile_aktuell;Spalte()=Spalte_aktuell)
der Vorteil ist, dass die Bedigte Formatierung die normale Formatierung nur überdeckt, aber diese nicht verändert. somit bleibt die normale Hintergrundfarbe auf jeden Fall erhalten.
außerdem kannst du über die Bedingte Formatierung einfacher anpassen, in welchem Bereich das gelten soll und welche Farbe verwendet wird.
kleiner Nachteil, man muss die Bedingte Formatierung für jedes Blatt neu anlegen.
Gruß Daniel
Anzeige
Ich mach das so ...
08.08.2022 18:27:42
Charly
Hi Robert
... für ne Arbeitsmappe

Option Explicit
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("A1:X30")
If Not Intersect(Target, Bereich) Is Nothing Then
Bereich.FormatConditions.Delete
With Target
.FormatConditions.Add Type:=xlExpression, Formula1:="=ZEILE(ZS)=" & Target.Row
.FormatConditions(1).Interior.Color = RGB(0, 255, 255)
End With
Else
Bereich.FormatConditions.Delete
End If
Set Bereich = Nothing
End Sub
Gruß Charly
PS. Farbe auf Gelb RGB(255, 255, 0)

Anzeige
AW: Code soll für die ganze AM funktionieren
09.08.2022 10:21:26
Robert
Hallo Ihr Lieben!
Danke für Eure Hilfe. Ich habe jetzt die Variante von Charly CNX angewandt. Diese erfüllt genau das, wie ich es wollte.
LG Robert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige