goodbytes
Goto Top

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

Content-ID: 638185

Url: https://administrator.de/contentid/638185

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

TsukiSan
TsukiSan 06.01.2021 um 10:33:14 Uhr
Goto Top
Hallo Torsten,

ich weiß nicht, welche Excel-Version du hast, aber bei Excel 2019 kann man über EINFÜGEN ein Textfeld einfügen und mittels Eigenschaft "TRANSPARENZ" etwas spielen.
Das könnte funktionieren.

grüße

Tsuki
colinardo
Lösung colinardo 06.01.2021 aktualisiert um 17:33:53 Uhr
Goto Top
Servus Thorsten,
Kann man das mittels vba erledigen?
selbst verständlich face-smile.
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
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
With .Shapes.AddTextbox(msoTextOrientationHorizontal, cell.Left, cell.Top, cell.Width, cell.Height)
Grüße Uwe
goodbytes
goodbytes 06.01.2021 aktualisiert um 15:57:36 Uhr
Goto Top
@tsuki
Natürlich geht das, aber ich möchte nicht jedes Jahr neu anfangen 365 Textfelder einzufügen und auf jede Zelle exakt zu positionieren, deshalb sollte er per vba gehen.

@uwe
Das sieht ja richtig gut aus, werde es nachher gleich probieren und Bescheid geben wenn es geht. Vielen Dank dir! face-smile

VG Torsten

Nachtrag...
Funktioniert perfekt, danke nochmal Uwe! face-smile
goodbytes
goodbytes 09.01.2021 um 13:03:28 Uhr
Goto Top
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?

VG Torsten
colinardo
Lösung colinardo 09.01.2021 aktualisiert um 15:10:18 Uhr
Goto Top
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.
Kannst du direkt nach Zeile 14 im With Statement ergänzen
.Textframe.HorizontalAlignment = xlHAlignRight
.Textframe.Characters.Font.Color = RGB(255,0,0)
Die Doku ist wie immer dein Freund und Helfer face-wink
https://docs.microsoft.com/de-de/office/vba/api/excel.textframe

Grüße Uwe
goodbytes
goodbytes 09.01.2021 um 15:01:13 Uhr
Goto Top
Ah, jetzt verstehe ich, vielen Dank Uwe! face-smile

VG Torsten