Vba transparentes textfeld über jede zelle in einem Bereich legen
Hallo,
ich habe einen Kalender für die Urlaubsplanung usw. In jedem Jahr lege ich dahinter als Hintergrundbild den Ferienkalender von meinem Bundesland. Nun möchte ich freie Tage, Urlaube und ein paar andere Sachen farblich unterlegen. Wenn ich die Zelle formatiere habe ich dabei keine Transparenz, kann nicht mehr das Hintergrundbild sehen.
Eine Lösung wäre, über jede einzelne Zelle in dem Bereich A32:L32 ein separates Textfeld zu legen. Kann man das mittels vba erledigen?
Danke schon mal im voraus!
VG Torsten
ich habe einen Kalender für die Urlaubsplanung usw. In jedem Jahr lege ich dahinter als Hintergrundbild den Ferienkalender von meinem Bundesland. Nun möchte ich freie Tage, Urlaube und ein paar andere Sachen farblich unterlegen. Wenn ich die Zelle formatiere habe ich dabei keine Transparenz, kann nicht mehr das Hintergrundbild sehen.
Eine Lösung wäre, über jede einzelne Zelle in dem Bereich A32:L32 ein separates Textfeld zu legen. Kann man das mittels vba erledigen?
Danke schon mal im voraus!
VG Torsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 638185
Url: https://administrator.de/contentid/638185
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
6 Kommentare
Neuester Kommentar
Servus Thorsten,
Willst du stattdessen wirklich "Textfelder" in die du was hineinschreiben kannst statt einer einfachen Rectangle-Form wie oben dann tauschst du Zeile 8 durch folgende aus
Grüße Uwe
Kann man das mittels vba erledigen?
selbst verständlich .Sub InsertTransparentShapes()
Dim shp As Shape, cell As Range
' Aktuelles Arbeitsblatt
With ActiveSheet
' Für jede Zelle im Bereich ...
For Each cell In .Range("A32:L32")
' Erstelle ein Rectangle-Shape in der Größe und Position der Zelle
With .Shapes.AddShape(1, cell.Left, cell.Top, cell.Width, cell.Height)
' diesem Shape Eigenschaften zuweisen
.Fill.Visible = True ' Füllung sichtbar
.Fill.ForeColor.RGB = RGB(79, 129, 189) 'Farbe
.Fill.Transparency = 0.5 ' Transparenz
.Fill.Solid ' Vollfarbe
.Line.Visible = False ' Rand nicht sichtbar machen
End With
Next
End With
End Sub
With .Shapes.AddTextbox(msoTextOrientationHorizontal, cell.Left, cell.Top, cell.Width, cell.Height)
Zitat von @goodbytes:
Hallo colinardo,
nun wollte ich in dem Zuge den Textfeldern beim Erstellen gleich noch Eigenschaften zuweisen, allerdings muss ich diese ja nicht dem Shape zuweisen, sondern dem Textfeld darin, denke ich? Ich wollte dem Textfeld die Ausrichtung der Schrift auf rechtsbündig zuweisen, also TextAlign = 3, und eine Textfarbe zuweisen. Kann ich das unmittelbar nach der Erstellung des Shapes der darin befindlichen Textbox zuweisen?
Ja kein Problem, dafür hat das Shape eine entsprechende Eigenschaft namens Textframe, diese hat wiederum weitere Eigenschaften für das Textfeld parat.Hallo colinardo,
nun wollte ich in dem Zuge den Textfeldern beim Erstellen gleich noch Eigenschaften zuweisen, allerdings muss ich diese ja nicht dem Shape zuweisen, sondern dem Textfeld darin, denke ich? Ich wollte dem Textfeld die Ausrichtung der Schrift auf rechtsbündig zuweisen, also TextAlign = 3, und eine Textfarbe zuweisen. Kann ich das unmittelbar nach der Erstellung des Shapes der darin befindlichen Textbox zuweisen?
Kannst du direkt nach Zeile 14 im With Statement ergänzen
.Textframe.HorizontalAlignment = xlHAlignRight
.Textframe.Characters.Font.Color = RGB(255,0,0)
https://docs.microsoft.com/de-de/office/vba/api/excel.textframe
Grüße Uwe