Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1588to1592
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

Textbox auf Arbeitsblatt ändern

Textbox auf Arbeitsblatt ändern
13.11.2017 23:59:34
fl618
Hallo zusammen
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textbox auf Arbeitsblatt ändern
15.11.2017 01:35:31
fcs
Hallo Franz,
leider liefert der Makro-Rekorder hier ein sehr umständliches Konstrukt, das nicht so einfach in eine Form ohne Select umgewandelt werden kann. Am übersichtlichsten wird es wen man das Shape zunächst einer entsprechend deklarierten Objektvariablen zuweist und dann die Eigenschaften anpasst.
Gruß
Dein Namensvetter Franz
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myComment As String
Dim PT As PivotTable
Dim objShape As Shape
'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)
Set objShape = ActiveSheet.Shapes("TextBox 1")
objShape.TextFrame2.TextRange.Characters.Text = myComment
'Farblich ausblenden der Textbox, wenn kein Kommentar vorhanden ist
With objShape
If Len(myComment) = 0 Then
.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent1
.Fill.ForeColor.Brightness = 0.8
Else
.Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.Fill.ForeColor.Brightness = 0
End If
End With
End Sub

Anzeige
AW: Textbox auf Arbeitsblatt ändern
15.11.2017 06:31:46
fl618
Hallo Franz
Ja, das löst mein Problem auf elegante Weise.
Ganz herzlichen Dank für den Tipp.
Gruss
Franz

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige