Ich stecke irgendwie fest und habe einen Knoten. Kann mir jemand helfen?
Ziel:
Ich habe eine Pivottabelle mit Konten, Steuerkennzeichen und Beträgen, in der ich Kommentare hinterlegen sollte.
Was ich bisher gemacht habe:
Ich habe ein Worksheet_SelectionChange-Makro, welches das Kommentarblatt nach Kombinationen aus Konto/Steuerkennzeichen durchsucht und, falls gefunden, das Resultat in eine Textbox ausgibt.
Was mir noch fehlt:
ich wollte noch etwas fancy werden und die Hintergrundfarbe der Textbox ändern, falls ein Kommentar gefunden wurde.
Mein Problem:
Eigentlich wollte ich die Textbox ändern, ohne sie anzuwählen. Aber irgendwie funktioniert das einfach nicht.
Bisheriger Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myComment As String
Dim PT As PivotTable
'Prüfen, ob sich die aktive Zelle in einer Pivottabelle befindet.
'Falls nicht, kann die Übung abgebrochen werden
On Error Resume Next
Set PT = Target.PivotTable
If PT Is Nothing Then
Exit Sub
End If
'Finden, ob ein Kommentar definiert wurde (custom function)
myComment = myTexter(Cells(Target.Row, 2), Cells(11, Target.Column), Sheets("Comment").Range(" _
rngComment"))
'Ausgeben des Kommentars in die Textbox (Textbox als Form control)
With ActiveSheet.Shapes.Range(Array("TextBox 1"))
.TextFrame2.TextRange.Characters.Text = myComment
End With
'Ausgeben des Kommentars in die Textbox (Textbox als ActiveX control)
'ActiveSheet.tbxComment.Text = myComment
'Farblich ausblenden der Textbox, wenn kein Kommentar vorhanden ist
If Len(myComment) = 0 Then
ActiveSheet.Shapes.Range(Array("TextBox 1")).Select
With Selection
.ShapeRange.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent1
.ShapeRange.Fill.ForeColor.Brightness = 0.8
End With
Else
ActiveSheet.Shapes.Range(Array("TextBox 1")).Select
With Selection
.ShapeRange.Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.ShapeRange.Fill.ForeColor.Brightness = 0
End With
End If
End Sub
Der letzte Teil funktioniert zwar, allerdings hätte ich lieber etwas in der Art von:
'Farblich ausblenden der Textbox, wenn kein Kommentar vorhanden ist
With ActiveSheet.Shapes.Range(Array("TextBox 1"))
If Len(myComment) = 0 Then
.ShapeRange.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent1
.ShapeRange.Fill.ForeColor.Brightness = 0.8
Else
.ShapeRange.Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.ShapeRange.Fill.ForeColor.Brightness = 0
End If
End With
Nur dass letzteres nicht funktioniert.
Kann mir jemand auf die Sprünge helfen? Was mache ich falsch?
Gruss
Franz