Hallo
ich möchte gerne in einem Word-Dokument verschiedene Labels indexiert ansprechen.
Das Ziel der Sub ist, dass die gröstmögliche Schrift unter beibehaltung der Grösse in ein Label eingetragen wird.
Die Labels sind auf einem Dokument und nicht in einer Userform!
Mein Vorgehen: Erst lese ich die aktuelle Grösse des Labels aus, dann trage ich eine grosse Schrift (hier x=60, Schriftgrösse 60) ein. Dann vergleiche ich die Grösse des Labels mit dem Anfangswert und verkleinere die Schrift schrittweise bis die Grösse wieder passt.
Die übergebenen Variabeln sind:
i als indexzähler für die Labels
Eintrag ist der String, der in das Label eingetragen werden soll.
Der Code stoppt bei der Zeile: With Controls("ThisDocument.Label"&i) da er das Objekt nicht findet
Wie muss ich das Label ansprechen? Bin leider nur Anfänger in VBA und wäre froh, wenn mir jemand helfen könnte! Vielen Dank
Private Sub DynLabelSize(ByRef i As Integer, ByRef Eintrag As String)
x = 60 'AnfangsSchriftgrösse
With Controls("ThisDocument.Label" & i)
maxBreite = .Width 'ursprüngliche Breite als max festlegen
maxHöhe = .Height 'ursprüngliche Höhe als max festlegen
.Font.Size = x 'Schriftgrösse setzen
.AutoSize = True
.WordWrap = False
.Caption = Eintrag 'Label füllen
Do While .Width > maxBreite 'loop solange Label zu breit
x = x - 1 'Schriftgrösse um 1 verkleinern
.Font.Size = x 'Schriftgrösse setzen
Loop
Do While .Height > maxHöhe 'wie oben aber mit LabelHöhe
x = x - 1
.Font.Size = x
Loop
.AutoSize = False
.Width = maxBreite 'ursprüngliche Breite wieder herstellen
.Height = maxHöhe 'ursprüngliche Höhe wieder herstellen
End With
End Sub
|