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

Ereignisse

Ereignisse
Alfonso
Hallo VBA-Profis,
habe ein Problem mit Ereignissen.
Mit anschliessendem Code wollte ich erreichen, dass beim auswählen bestimmter Zellen immer rechts davon der Text rot formatiert wird. Das hat auch soweit funktioniert, aber wenn die zuvor ausgewählte Zelle wieder verlassen wird, soll der Text rechts davon wieder weiss werden.
Was habe ich da falsch gemacht, bzw. wie lautet die richtige Lösung?
Für eine Hilfestellung zu meinem Problem wäre ich Euch sehr dankbar.
Private Sub Worksheet_SelectionChange( _
ByVal Target As Excel.Range)
If Target.Address = "$B$2" Then
ActiveCell.Offset(0, 1).Range("A1").Font.Color = -16776961
Else
Selection.Font.ThemeColor = xlThemeColorDark1
End If
If Target.Address = "$B$3" Then
ActiveCell.Offset(0, 1).Range("A1").Font.Color = -16776961
Else
Selection.Font.ThemeColor = xlThemeColorDark1
End If
If Target.Address = "$B$4" Then
ActiveCell.Offset(0, 1).Range("A1").Font.Color = -16776961
Else
Selection.Font.ThemeColor = xlThemeColorDark1
End If
End Sub
Gruß Helmut

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Ereignisse
05.05.2012 16:29:29
Hajo_Zi
Hallo Helmut,
ich hätte es so geschrieben.

Private Sub Worksheet_SelectionChange( _
ByVal Target As Excel.Range)
If Target.Address = "$B$2" Then
Target.Offset(0, 1).Font.Color = 255
ElseIf Target.Address = "$B$3" Then
Target.Offset(0, 1).Font.Color = 255
ElseIf Target.Address = "$B$4" Then
Target.Offset(0, 1).Font.Color = 255
Else
Target.Font.ThemeColor = xlThemeColorDark1
End If
End Sub

das Else erscheint mir aber falsch, da habe icgh mich an Deinen Code gehalten.

Anzeige
AW: Ereignisse
05.05.2012 16:35:12
Franc
Wenn es dynamisch sein soll dann so.
Wenn ich das richtig sehe wird überall das gleiche gemacht - von daher kannst du das Makro auch "kürzen"
Wenn das mit strAlt nimmst, vergiss nicht die Zeile Public strAlt As String mit reinzukopieren
Public strAlt As String
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If strAlt  "" Then Range(strAlt).Font.ThemeColor = xlThemeColorDark1
Set isect = Application.Intersect(Range("B2:B4"), Target)
If isect Is Nothing Then Exit Sub
Target.Offset(0, 1).Font.Color = -16776961
strAlt = Target.Offset(0, 1).Address
End Sub
Du kannst auch das mit der Variable strAlt weglassen und am Anfang vom Makro schreiben
Range("C2:C4").Font.ThemeColor = xlThemeColorDark1
Dann wird der Bereich immer auf die Farbe zurückgesetzt (ist auch besser, falls du abspeicherst und die Map neu lädst - bei dem ersten Beispiel mit der strAlt Variable merkt er sich beim schließen und neu öffnen nicht was die letzte Zelle war - man müsste es quasi noch mal anklicken.
Anzeige
AW: Ereignisse
05.05.2012 17:33:21
Gerd
Hallo Helmut!
Private Sub Worksheet_SelectionChange( _
ByVal Target As Excel.Range)
Static vnt
If Not IsEmpty(vnt) Then vnt.Font.ThemeColor = xlThemeColorDark1
If Target.Count = 1 Then
If Not Intersect(Target, Range("B2:B4")) Is Nothing Then
Set vnt = Target.Offset(0, 1)
vnt.Font.Color = -16776961
End If
End If
End Sub
Gruß Gerd
AW: Ereignisse
05.05.2012 18:02:42
Alfonso
Hallo Gerd,
vielen Dank für die SuperLösung.
Es klappt wunderbar.
Gruß
Helmut

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige