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

VBA Zellen hervorheben

VBA Zellen hervorheben
10.10.2002 21:44:24
Boris
Hallo Excellenzen,

wer kann mir (VBA Anfänger) folgenden Code (von Hans Herber) umschreiben:

Hier wird immer die gerade aktive Zelle farbig dargestellt, und, so glaube ich zumindest, die vorherige Zelle wieder in ihren Ursprungszustand gesetzt.

Ich möchte, hierauf aufbauend, dass nicht die aktive Zelle, sondern, ausgehend von der aktiven Zelle, die Zelle in Zeile 1 und die Zelle in Spalte 2 farbig angezeigt wird (z.B. aktive Zelle: D 10, dann soll farbig sein: D1 und B10).
Wichtig ist halt, dass bei erneutem Zellwechsel die Vorgängerzellen wieder ihren ursprünglichen Zustand (inklusive vorhandener bedingter Formate) erhalten.

Schon mal vielen Dank für die Hilfe!

Gruß Boris

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Uups, falscher Code
10.10.2002 21:46:42
Boris
Da haben sich in den Code doch noch 2 zeilen von mir eingeschlichen.

Der echte Hans Herber-Code:

Gruß Boris

Re: Uups, falscher Code
11.10.2002 06:58:56
Hajo_Zi
Hallo Boris

ich bewundere Dich für Dein Vorhaben, bei Zellmarkierung von meheren Zellen die Farbe auch wieder zurüchzusetzen. Ich habe nun auch schon Code entwickelt um einzelne Zellen hervorzuheben und wieder zurückzusetzen. Aber für mehere Zellen war mir der Aufwand zu Groß.

Du schreibst die Zellen sind mit bedingter Formatierun Formatiert, da bracht doch die Farbe nicht wieder zurückgesetzt werden.

Du brauchst doch nur von Deiner activen Zelle, nur noch Deine anderen Zellen wählen (Makrorecorder hilf bei der Syntax) und Farbe setzen.

Gruß Hajo

Anzeige
Re: Uups, falscher Code
11.10.2002 07:19:36
JürgenR
Hi Boris,

ich hoffe ich hab das richtig verstanden:

Um die Zellen mit bedingter Formatierung musst du dich nicht kümmern, da die Bedingte Formatierung erhalten bleibt.

Gruß
Jürgen

Re: Uups, falscher Code
11.10.2002 08:43:57
Boris
Hallo Jürgen, hallo Hajo,

danke für eure Antworten.
Der Code von Jürgen ist leider nicht ganz nach meiner Vorstellung, weil ja mit der Zeile

Cells.Interior.ColorIndex = xlNone

offensichtlich alle Hintergrundfarben gelöscht werden.
Meine Tabelle enthält aber sehr wohl Hintergrundfarben UND bedingte Formate etc.
Die Zellen sollen halt wieder in ihren Ursprungszustand gesetzt werden, als wär nichts gewesen...

Ich werd selbst auch weiterfummeln, aber vielleicht könnt ihr euch ja auch noch Gedanken machen...;-))

Danke und Gruß

Boris

Anzeige
Re: Uups, falscher Code
11.10.2002 10:56:34
Hajo_Zi
Hallo Boris

aus Deinem letzten Beitrag geht nun hervor das nicht alle Zellen mit Bedingter Formatierung eingestellt sind. Sondern welche auch von Hand???

Ich habe ja schon im ersten Beitrag geschrieben das es mir zu Aufwendig ist und das ich Deinen Mut für solche Aufgabe bewundere.

Es geht ja nur um 3 Zellen. Ich hätte mal folgenden Ansatz gewählt.

Die Zelladresse und Farben in ein 2 Dimensionales Array schreiben.

Bei Private Sub Worksheet_SelectionChange(ByVal Target As Range) als erstes die neuen auslesen und dann die alten zurücksetzen.

Für alle Tabellen und alle Zellen und zurücksetzen beim schließen habe ich es mal so gelöst. Vielleicht bekommst Du es umgebaut. Falls ja Poste es in diesen Beitrag, dann werde ich auch Benachrichtigt. Die Lösung würde mich schon intressieren.


In ein Modul
Option Explicit
Public OldColorIndex As Variant
Public OldRange As String
Public Register As String


in DieseArbeitsmappe
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If OldRange <> "" Then ActiveSheet.Range(OldRange).Interior.ColorIndex = OldColorIndex
End Sub

Private Sub Workbook_Open()
    OldRange = ActiveCell.Address
    Register = ActiveSheet.Name
    OldColorIndex = ActiveCell.Interior.ColorIndex
    ActiveCell.Interior.ColorIndex = 3
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    OldRange = ActiveCell.Address
    OldColorIndex = ActiveCell.Interior.ColorIndex
    ActiveCell.Interior.ColorIndex = 3
    Register = ActiveSheet.Name
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If OldRange <> "" Then Worksheets(Register).Range(OldRange).Interior.ColorIndex = OldColorIndex
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As ObjectByVal Target As Range)
'   Beim 1. Aufruf ist OldRange noch undefiniert
    If OldRange = "" Then
        OldRange = Target.Address
        OldColorIndex = Target.Interior.ColorIndex
'       Setze Hintergrundfarbe der aktiven Selection auf Rot
        Target.Interior.ColorIndex = 3
    Else
'       Setze alten Range auf alte Farbe
        If Range(OldRange).Interior.ColorIndex = 3 Then
            Range(OldRange).Interior.ColorIndex = OldColorIndex
        End If
        OldColorIndex = Target.Interior.ColorIndex
'       Merke mir aktuellen Adresse für nächsten Aufruf
        OldRange = Target.Address
'       Setze Hintergrundfarbe der aktiven Selection auf Rot
        Target.Interior.ColorIndex = 3
    End If
End Sub
 

     Code eingefügt mit Syntaxhighlighter 1.16

Gruß Hajo

Anzeige
Re: Uups, falscher Code
11.10.2002 14:41:43
Boris
Hallo Hajo,

dein Code funktioniert (wie auch von dir nicht anders zu erwarten...;-))
Die aktive Zelle wird in jedem Tabellenblatt rot markiert und beim Wechsel wieder in ihren alten Zustand versetzt.
Ich werde jetzt mal selbst ein bisschen probieren und gegebenenfalls - aufbauend auf deinem Code - eine neue Anfrage starten (falls ich es nicht hinbekomme).
Auf jeden Fall schon mal vielen Dank für Deine Mühe.
Falls der Thread bis zur endgültigen Lösung verschwunden sein sollte, werde ich dich über ein neues Posting informieren.

Gruß Boris

P.S.: Konnte erst jetzt antworten, weil heute den ganzen Tag GARTENARBEIT angesagt war (und noch ist...)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige