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

Schrift bei Klick in Zelle ändern

Schrift bei Klick in Zelle ändern
19.10.2015 15:38:07
Tim
Hallo,
ich möchte gerne beim Klick auf eine Zelle (Bereich D10:D100) prüfen, ob der jeweilige Text durchgestrichen ist oder nicht und ihn entsprechend ändern.
Da ich VBA-Anfänger bin, habe ich mir mit einer Hilfsspalte beholfen, die entweder "Hide" (Text durchgestrichen) oder "Show" (Text normal) zeigt.
Bisher habe ich den folgenden Code, der bei einer bestimmten Zelle funktioniert.
Kann mir jemand sagen, was ich hier ändern muss, damit dies bei allen Zellen im obigen Bereich funktioniert ?
Wenn es noch einen einfacheren Weg ohne Hilfsspalte gibt, wäre ich auch dafür dankbar.
Gibt es zusätzlich noch die Möglichkeit, die Schriftfarbe auf rot (durchgestrichen) bzw. schwarz (normal) zu ändern ? Das wäre perfekt.
Ich weiss, das ist .color = xxx aber mir war nicht klar, wie ich das hier mit dem Durchstreichen kombinieren kann.
Mein Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' show / hide optional services
If Not Intersect(Target, Range("D15")) Is Nothing Then
If Worksheets(1).Range("E15") = "Hide" Then
Worksheets(1).Range("E15") = "Show"
Worksheets(1).Rows("16:20").Hidden = False
Else
Worksheets(1).Range("E15") = "Hide"
Worksheets(1).Rows("16:20").Hidden = True
End If
End If
If Not Intersect(Target, Range("D16:D20")) Is Nothing Then
If Worksheets(1).Range("E16") = "Hide" Then
Worksheets(1).Range("E16") = "Show"
Worksheets(1).Range("D16").Font.Strikethrough = False
Else
Worksheets(1).Range("E16") = "Hide"
Worksheets(1).Range("D16").Font.Strikethrough = True
End If
End If
End Sub

Vielen Dank im Voraus,
Tim

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

Betreff
Datum
Anwender
Anzeige
AW: Schrift bei Klick in Zelle ändern
19.10.2015 15:47:19
Rudi
Hallo,
so?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
If Len(Target) Then
If Not Intersect(Range("D10:D100"), Target) Is Nothing Then
With Target.Font
.Strikethrough = Not .Strikethrough
.Color = -.Strikethrough * 255
End With
End If
End If
End If
End Sub
Gruß
Rudi

AW: Schrift bei Klick in Zelle ändern
19.10.2015 16:09:36
Tim
Hallo Rudi,
vielen Dank für die schnelle Hilfe - das funktioniert super !
Damit ich es beim nächsten Mal auch richtig anwende, kannst Du mir noch folgendes sagen:
1) Ist Not .Strikethrough das gleiche wie Strikethrough = False ?
2) Was genau bedeutet -. vor dem Strikethrough ? Das habe ich so noch nicht gesehen.
Viele Grüße,
Tim

Anzeige
AW: Schrift bei Klick in Zelle ändern
19.10.2015 16:25:38
Rudi
Hallo,
1) Ist Not .Strikethrough das gleiche wie Strikethrough = False ?
Nein. Das dreht die Eigenschaft einfach um. True wird False und False wird True.
-. vor dem Strikethrough ?
True = -1 und False = 0. Ergo ergibt .Color -(-1)*255 = 255 oder -0*255 = 0 somit rot oder schwarz.
Der . stellt den Bezug zu With Target.Font her.
Ohne With-Rahmen sieht das so aus:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
If Len(Target) Then
If Not Intersect(Range("D10:D100"), Target) Is Nothing Then
Target.Font.Strikethrough = Not Target.Font.Strikethrough
Target.Font.Color = -Target.Font.Strikethrough * 255
End If
End If
End If
End Sub
Gruß
Rudi

Anzeige
AW: Schrift bei Klick in Zelle ändern
19.10.2015 16:26:36
Tim
Das ist super - danke für die tolle Erklärung, ist eine riesen Hilfe !
Viele Grüße,
Tim

AW: Schrift bei Klick in Zelle ändern
19.10.2015 15:52:34
Hajo_Zi
Hallo Tim,
falls mehr als eine Zelle gewählt.
Option Explicit                                     ' Variablendefinition erforderlich
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'* H. Ziplies                                  *
'* 19.10.15                                    *
'* erstellt von HajoZiplies@web.de             *
'* http://Hajo-Excel.de/
Dim RaBereich As Range                          ' Variable für Bereich
Dim RaZelle As Range                            ' Variable für Zelle
Set RaBereich = Range("C8:D15,L22:M39, O21:O26")       ' Bereich der Wirksamkeit
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
'    Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
'    Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
'    Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
'    Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
'    Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
'    Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
' ab Vesion XP braucht der Schutz nicht aufgehoben werden
' Formatierung bei Schutz kann über Dialog Schutz eingestellt werden
' Zelle die in dem Bereich liegen auf die Variable schreiben
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Target)
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
With RaZelle.Font
If .Strikethrough = False Then
.Strikethrough = True
Else
.Strikethrough = False
End If
End With
Next RaZelle
'ActiveSheet.protect ("Passwort")
End If
Set RaBereich = Nothing                         ' Variable leeren
End Sub

Anzeige
AW: Schrift bei Klick in Zelle ändern
19.10.2015 16:27:02
Tim
Hallo Hajo,
vielen Dank auch dafür !
Viele Grüße,
Tim

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige