Clever-Excel-Forum

Normale Version: VBA -> Wenn Zelle ausgewählt, bestimmte Zeile/Spalte markieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Grüß euch,

brauch wieder mal eure Hilfe mit einem VBA Code.

Folgende Thematik:
Ich hab hier ein größeres Excel File.
Wenn ich die Zelle X111 auswähle (mittels Mausklick bzw über die Tastatur), würde ich gerne die Zellen X13 und F111 markieren (z.B. Türkis -> ColorIndex = 8).
Dann wäre das Ganze nämlich etwas übersichtlicher.

Da hier gewisse Formatierungen bereits vorhanden sind, sollte diese wiederhergestellt werden, sobald ich eine andere Zelle Auswähle und bevor ich das File speichere/ schließe.

Ich hab zwar bereits ein paar Codes gefunden und getestet, jedoch wurden hier die Formatierungen gelöscht, die ganze Zeile/Spalte markiert usw.

Wäre super, wenn mich hier wieder jemand unterstützen könnte :)

Gruß
Hohle
Wäre es nicht besser die Struktur der Eingabevorlage zu verbessern ?
Hallo,


Zitat:Da hier gewisse Formatierungen bereits vorhanden sind, sollte diese wiederhergestellt werden, sobald ich eine andere Zelle Auswähle und bevor ich das File speichere/ schließe.

Ich hab zwar bereits ein paar Codes gefunden und getestet, jedoch wurden hier die Formatierungen gelöscht, die ganze Zeile/Spalte markiert usw.


was für eine Hilfe erwartest Du eigentlich für Deinen Code? 
Ich jedenfalls habe Deinem Post nur ntnehmen können, daß Du ColorIndex = 8 einsetzen willst.
Das ist weder hilfreich, noch kann damit ein brauchbarer Code erzeugt werden.
Außerdem gibt es auch in Excel, wie überall im Leben, Ordnungen, an die man sich zu halten hat.

Wenn ich Dich richtig verstanden habe, dann willst Du mit VBA  "Bedingte Formatierungen" umgehen
oder sogar aushebeln.
Das wird Dir nicht gelingen, weil die "Bedingten Formatierungen" in Excel Vorrang besitzen.
Hallo Peter,

der TE hat nur von Formatierungen geschrieben, kann also bedingt sein oder auch nicht.

Hallo Hohle,

was willst Du damit bezwecken? F111 und X13 siehst Du wahrscheinlich nur bei recht kleinem Zoom auf einmal … Es geht auch nur um die Zelle X111? Im Hinblick auf Peters Frage - die Formatierung von X13 und F111 ist nicht bedingt?

Hier mal ein Ansatz wie er Deiner Aufgabe entspricht. Der Code gehört in das Codemodul vom betreffenden Tabellenblatt. Es gibt lediglich das Problem, dass bei einem Beenden der Codeausführung oder Speichern und Schließen der Mappe ohne vorheriges Zurücksetzen der Farben die alten Farben verloren gehen. Um das zu vermeiden müsste man die Farben an anderer Stelle speichern, z.B. in Zellen eines weiteren Blattes.

Code:
Option Explicit
Dim vorherX13, vorherF111

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Wenn der gewaehlte Bereich X111 ist, dann
If Target.Address = "$X$111" Then
  'alte Farbwerte von X13 und F111 merken
  vorherX13 = Range("X13").Interior.Color
  vorherF111 = Range("F111").Interior.Color
  'Farbe 8 setzen
  Range("X13").Interior.ColorIndex = 8
  Range("F111").Interior.ColorIndex = 8
'Oder Wenn der gewaehlte Bereich nicht X111 ist
'und schon eine Farbe gesichert wurde, dann
ElseIf vorherX13 <> 0 Then
  'gesicherte Farben uebernehmen
  Range("X13").Interior.Color = vorherX13
  Range("F111").Interior.Color = vorherF111
'Wenn der gewaehlte Bereich X111 ist, dann
End If
End Sub
Danke für die Antworten.
Leider habe ich zwei Buchstaben bei meiner Anfrage vergessen und dementsprechend ist das Ganze verwirrend...
Zitat:Wenn ich z.B. die Zelle X111 auswähle (mittels Mausklick bzw über die Tastatur)...


Zitat:Wenn ich Dich richtig verstanden habe, dann willst Du mit VBA  "Bedingte Formatierungen" umgehen
oder sogar aushebeln.
Nein, in der Spalte F bzw in der Zeile 13 gibt es keine bedingten Formatierungen.
In der F Spalte sind Namen hinterlegt und teilweise mit einer Farbe markiert, in der Zeile 13 ist das Datum hinterlegt und auch teilweise markiert (Feiertage usw).


Zitat:was willst Du damit bezwecken? F111 und X13 siehst Du wahrscheinlich nur bei recht kleinem Zoom auf einmal … Es geht auch nur um die Zelle X111? Im Hinblick auf Peters Frage - die Formatierung von X13 und F111 ist nicht bedingt?
Die Ansicht ist fixiert (G13) -> dementsprechend sehe ich die relevante Spalte/Zeile.
Es geht um den gesamten Bereich von G13 bis aktuell PV115 (ab G13 bis Ende wäre auch super, da sich Zeilen/Spaltenanzahl ändern kann)
Wie geschrieben, ist das leider meiner schlechten Anfrage geschuldet.


Bei diesem File wurde ein Autoclose/ Autosave eingebaut.
Sollte seit 5 Min keine Änderung mehr passiert sein, wird es gespeichert und geschlossen.
Klickt man auf schließen, wird es auch automatisch gespeichert und geschlossen.
Dementsprechend könnte man den Code für die alte Formatierung wahrscheinlich davor einfügen oder?
Code:
    If Not ThisWorkbook.Saved Then ThisWorkbook.Save
    ThisWorkbook.Close

(17.01.2020, 19:43)schauan schrieb: [ -> ]Hier mal ein Ansatz wie er Deiner Aufgabe entspricht. Der Code gehört in das Codemodul vom betreffenden Tabellenblatt. Es gibt lediglich das Problem, dass bei einem Beenden der Codeausführung oder Speichern und Schließen der Mappe ohne vorheriges Zurücksetzen der Farben die alten Farben verloren gehen. Um das zu vermeiden müsste man die Farben an anderer Stelle speichern, z.B. in Zellen eines weiteren Blattes.

Code:
Option Explicit
Dim vorherX13, vorherF111

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Wenn der gewaehlte Bereich X111 ist, dann
If Target.Address = "$X$111" Then
  'alte Farbwerte von X13 und F111 merken
  vorherX13 = Range("X13").Interior.Color
  vorherF111 = Range("F111").Interior.Color
  'Farbe 8 setzen
  Range("X13").Interior.ColorIndex = 8
  Range("F111").Interior.ColorIndex = 8
'Oder Wenn der gewaehlte Bereich nicht X111 ist
'und schon eine Farbe gesichert wurde, dann
ElseIf vorherX13 <> 0 Then
  'gesicherte Farben uebernehmen
  Range("X13").Interior.Color = vorherX13
  Range("F111").Interior.Color = vorherF111
'Wenn der gewaehlte Bereich X111 ist, dann
End If
End Sub

Hallo schauan,
hab den Code mal probiert.
Die Zellen werden türkis gefärbt, jedoch bleibt sie türkis, nachdem ich eine andere Zelle auswähle.
Also das Speichern der Formatierung scheint nicht zu funktionieren.
Hallöchen,

also, wenn ich in X111 klicke wird die Zelle F111 und sicher auch oben die türkis. Klicke ich z.B. auf X110, wird die Zelle wieder weiß. F111 darf natürlich nicht schon vor der Einfärbung türkis gewesen sein, sonst sieht man keine Änderung.

Die Farben würde ich ja in ein extra Blatt speichern. Das würde dann beim Färben passieren und nicht beim Speichern.

Ganz ausformuliert ist die Aufgabe sicher noch nicht.

Was bedeutet denn "Es geht um den gesamten Bereich von G13 bis aktuell PV115 " Ich vermute jetzt erst mal, wenn Du in Y111 klickst, willst Du Y13 und G111, also alles eine Spalte weiter. Das gäbe nur ein Problem. G13 bekämst Du ja nur, wenn Du in G111 klickst. Aber dann muss ich links daneben Excel verlassen Sad (A111 würde ich bei S111 bekommen, dann wäre Schluss)
Anbei eine kleine Test Datei.
Das Makro für die Spalte F funktioniert genau so wie ich es haben will  :19:

Jetzt starte ich den Versuch für die Zeile 12.

(20.01.2020, 19:25)schauan schrieb: [ -> ]also, wenn ich in X111 klicke wird die Zelle F111 und sicher auch oben die türkis. Klicke ich z.B. auf X110, wird die Zelle wieder weiß. F111 darf natürlich nicht schon vor der Einfärbung  türkis gewesen sein, sonst sieht man keine Änderung.

Bei deinem Code war ein kleiner Fehler drin, die Variablen wurden nicht definiert.
Mit Integer hats dann auch bei mir funktioniert ;)
Code:
Option Explicit
Dim vorherX13, vorherF111

Funktioniert  :18: