Hallo,
deine Beschreibung ist zwar umfangreich aber nicht wirklich ausreichend. Was genau willst du denn machen? Willst du das Userform im Entwicklungsmodus bearbeiten oder wird das Userform bereits zur Laufzeit auf dem Bildschirm angezeigt wenn du das Frame verändern willst?
Im ersten Fall könntest du deinen Code wie folgt aufbauen:
ThisWorkbook.VBProject.VBComponents("Userform1").Designer.Controls("Frame1").Height = 15
wobei du "UserForm1" durch die Variable mit deinem Userformnamen anpassen kannst. Wichtig dabei. Jedes Userform im Projekt muss ein Control mit dem Namen deines übergebenen Frames haben. Wenn dem nicht so ist kann das zu Laufzeitfehlern führen.
Falls das bzw die Userforms bereits angezeigt werden dann evtl. so:
Sub Test()
Framehoehe "UserForm1", "Frame1"
End Sub
Sub Framehoehe(ufm As String, frm As String)
UserForm1.Show vbModeless
UserForm2.Show vbModeless
For Each uf In VBA.UserForms
If uf.Name = ufm Then
uf.Controls(frm).Height = 30
End If
Next uf
End Sub
Wichtig: Die Userforms müssen laufen um in der VBA.Useforms-Auflistung gelistet zu sein. Diese Auflistung ist 0-basiert. D.h. das erste Userform hat die Nr. 0. Die Userforms-Auflistung nimmt keine Namen sondern nur Nummern an. Daher die Prüfung über die For Each Schleife.
Gruß Mr. K.
|