Logik bei KLick in Zelle?
#1
Hi,

gibt es eine Möglichkeit, nach einem Klick in eine Zelle (bsp. A1) bestimmte andere Zellen farblich hervorzuheben. Diese Markierung soll, wenn möglich nach einer EIngabe in einer dieser Zellen wieder aufgelöst bzw. entfernt werden.

Also Klick in A1

Hervorhebung von B2, B3, B4, B5

Dann Eingabe in eine Zelle von B2, B3, B4, B5 und danach die Löschung der Hervorhebung.

Danke
Top
#2
Hallo

z.B. so

der Code gehört in das Tabellenblatt

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Target.Address = "$A$1" Then
       Range("B2:B5").Interior.Color = vbRed
   End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim rngBereich As Range
   Set rngBereich = Range("B2:B5")
   If Not Intersect(Target, rngBereich) Is Nothing Then
       Target.Interior.Color = xlNone
   End If
End Sub


MfG Tom
Top
#3
Hi,
WOW!

Danke für die schnelle Hilfe. Allerdings muss ich dann nur in eine Zelle von B2:b5 etwas reinschreiben und danach sollen alle Farbveränderungen wieder aufgehoben werden.

Oder gibt es kein Script, dass ich auf einen Button setzen kann, der das Aufheben erledigt?
Top
#4
Hi

das könnte so gehen

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rngBereich As Range
  Set rngBereich = Range("B2:B5")
  If Not Intersect(Target, rngBereich) Is Nothing Then
      rngBereich.Interior.Color = xlNone
  End If
End Sub


MfG Tom
Top
#5
... und wenn du mit $A$1 das Färben einleitest, könntest du mit $B$1 das "Entfärben" durchführen:


Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$1" Then Range("B2:B5").Interior.Color = vbRed
    If Target.Address = "$B$1" Then Range("B2:B5").Interior.Color = xlNone
End Sub

Es gibt viele Möglichkeiten, z.B. auch durch einen Doppelklick auf eine bestimmte Zelle (hier $B$1):

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Target.Address = "$B$1" Then
           Cancel = True
           Range("B2:B5").Interior.Color = xlNone
       End If
End Sub

Viel Erfolg.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#6
Ist es denkbar, dass eure Lösungen ein bereits vorhandenes Format ungefragt überschreibt?
Ich hätte ja vielleicht etwas mit VBA-gesteuerter bedingter Formatierung …
Aber der TE ist "abwegigen" Lösungen ja eher unaufgeschlossen, wie ich erfahren durfte.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#7
Hi Ralf

selbstverfreilich werden dabei ungefragt vorherige Formatierungen überschrieben
da aber in der Aufgabenstellung davon nüscht zu lesen war,
ist für mich damit die Lösung gefunden  :19: 
sollte dann mit Salamitaktik neue Anforderungen gestellt werden,
mach ich den Hajo  :05:
Top
#8
Hallo Ralf,

du hast vollkommen Recht, aber er fragte nach einer Aktion, die durch einen Klick in eine Zelle ausgelöst wird - und das macht die bedingte Formatierung meiner Meinung nach nicht. Ich würde das auch eher über unterschiedliche Zellinhalte und bedingter Formatierung lösen, zumal ich dann nicht zwischen Maus und Tastatur wechseln muss. Aber jeder Jeck ist anders - wie man in Kölle sagt Wink
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#9
:19:
Warten wir mal die Reaktion von Silvr ab.
Zitat:aber er fragte nach einer Aktion, die durch einen Klick in eine Zelle ausgelöst wird - und das macht die bedingte Formatierung meiner Meinung nach nicht.
Doch doch, das geht!  :21:
(und hat den Vorteil, dass es sich nur um eine temporäre Formatierung - ganz ohne modulweite Variablen - handelt)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#10
Aufgrund der PN von LuckyJoe habe ich mich entschlossen, die Vorgehensweise der temporären bed. Form. zur farblichen Markierung (ohne Variablen) mal der Allgemeinheit zu zeigen:

Modul Modul1
Option Explicit 

Sub BFneu()
With Range("B2:B5")
  .FormatConditions.Add Type:=xlExpression, Formula1:="=1=1"
  .FormatConditions(.FormatConditions.Count).SetFirstPriority
  .FormatConditions(1).Interior.Color = vbRed
End With
End Sub

Sub WegDamit()
On Error Resume Next
With Range("B2:B5")
  .FormatConditions(.FormatConditions.Count).Delete
End With
On Error GoTo 0
End Sub

Microsoft Excel Objekt Tabelle1
Option Explicit 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
   Call BFneu
Else
  Call WegDamit
End If
End Sub

Der dirty trick dabei ist, dass ich der bed.Form. eine Formel zuweise, die immer wahr ist (=1=1), sie aber nur aktiv wird, wenn A1 markiert ist.

Datei im Anhang.

Gruß Ralf


Angehängte Dateien
.xlsm   temporäre Faerbung durch Zellenselection.xlsm (Größe: 17,16 KB / Downloads: 2)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste