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-Key: 638185

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

Printed on: April 26, 2024 at 03:04 o'clock

Member: TsukiSan
TsukiSan Jan 06, 2021 at 09:33:14 (UTC)
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
Member: colinardo
Solution colinardo Jan 06, 2021 updated at 16:33:53 (UTC)
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
Member: goodbytes
goodbytes Jan 06, 2021 updated at 14:57:36 (UTC)
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
Member: goodbytes
goodbytes Jan 09, 2021 at 12:03:28 (UTC)
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
Member: colinardo
Solution colinardo Jan 09, 2021 updated at 14:10:18 (UTC)
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
Member: goodbytes
goodbytes Jan 09, 2021 at 14:01:13 (UTC)
Goto Top
Ah, jetzt verstehe ich, vielen Dank Uwe! face-smile

VG Torsten