04.03.2019, 10:59
(Dieser Beitrag wurde zuletzt bearbeitet: 04.03.2019, 11:12 von WillWissen.
Bearbeitungsgrund: Codetags
)
Hi Profis,
ich bin dabei gerade ein Exceltapete zu stricken. Dabei wollte ich, dass sich gewisse Felder (in denen Text enthalten sind) rot markieren, wenn gewisse Zustände gegeben sind.
Sozusagen als eine Art Plausiprüfung.
(Zellen sind hier nur Beispiele für eine seperate Mappe, in der ich das Makro probiere, bevor ich es in die eigentliche Excel einbaue)
Ich habe also drei Zellen:
strTarget1 = A1 als Eingabefeld, ist normalerweise leer ("")
strTarget2 =A2 als Eingabefeld, ist normalerweise leer ("")
strText = D1 als Beschrift welche hervorgehoben werden soll
Ziel:
Wenn strTarget1 nicht leer ist, muss strTarget2 dem Inhalt von strTarget1 entsprechen, ansonsten wird strText rot gefärbt.
Ich habe die Funktion mir zusammengewurstelt, bin aber mit der Darstellung des Makros nicht zufrieden, dass muss doch einfacher gehen oder?
Ich bin noch ziemlich neu im Umgang mit VBA und mach glaub ich vieles noch zu umständlich, wäre super wenn ich hier von euch paar Tipps bekommen könnte :)
Erwartete "Verkürzung" der Funktion:
Würde mich auf antworten freuen!
Lg euer Skibi
ich bin dabei gerade ein Exceltapete zu stricken. Dabei wollte ich, dass sich gewisse Felder (in denen Text enthalten sind) rot markieren, wenn gewisse Zustände gegeben sind.
Sozusagen als eine Art Plausiprüfung.
(Zellen sind hier nur Beispiele für eine seperate Mappe, in der ich das Makro probiere, bevor ich es in die eigentliche Excel einbaue)
Ich habe also drei Zellen:
strTarget1 = A1 als Eingabefeld, ist normalerweise leer ("")
strTarget2 =A2 als Eingabefeld, ist normalerweise leer ("")
strText = D1 als Beschrift welche hervorgehoben werden soll
Ziel:
Wenn strTarget1 nicht leer ist, muss strTarget2 dem Inhalt von strTarget1 entsprechen, ansonsten wird strText rot gefärbt.
Ich habe die Funktion mir zusammengewurstelt, bin aber mit der Darstellung des Makros nicht zufrieden, dass muss doch einfacher gehen oder?
Ich bin noch ziemlich neu im Umgang mit VBA und mach glaub ich vieles noch zu umständlich, wäre super wenn ich hier von euch paar Tipps bekommen könnte :)
Code:
Funktionierendes Makro:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strTarget1 As Range
Dim strTarget2 As Range
Dim strText As Range
Set strTarget1 = Range("A1")
Set strTarget2 = Range("A2")
Set strText = Range("D1")
'Wenn A1 und A2 leer dann D1 in Schwarz
If strTarget1.Value = "" And strTarget2.Value = "" Then
strText.Select
With Selection.Font
.ThemeColor = xlThemeColorLight1
.TintAndShade = 4.99893185216834E-02
End With
End If
'Wenn A1 NICHT leer und A2 leer dann D1 in Rot
If Not strTarget1.Value = "" And strTarget2.Value = "" Then
strText.Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End If
'Wenn A1 NICHT leer und A2 = A1 dann D1 in Schwarz
If Not strTarget1.Value = "" And strTarget2.Value = strTarget1 Then
strText.Select
With Selection.Font
.ThemeColor = xlThemeColorLight1
.TintAndShade = 4.99893185216834E-02
End With
End If
'Wenn A1 NICHT leer und A2 NICHT gleich A1 dann D1 in rot
If Not strTarget1.Value = "" And Not strTarget2.Value = strTarget1 Then
strText.Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End If
End Sub
Erwartete "Verkürzung" der Funktion:
Code:
Private Sub Worksheet_vergleich(ByVal Target As Range)
Dim strTarget1 As Range
Dim strTarget2 As Range
Dim strText As Range
Set strTarget1 = Range("A1")
Set strTarget2 = Range("A2")
Set strText = Range("D1")
If Not strTarget1.Value = "" And strTarget2.Value <> strTarget1 Then
Text.Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Else
Text.Select
With Selection.Font
.ThemeColor = xlThemeColorLight1
.TintAndShade = 4.99893185216834E-02
End With
End If
End Sub
Würde mich auf antworten freuen!
Lg euer Skibi