Private
Sub
UserForm_Initialize()
With
Controls.Add(
"FORMS.TEXTBOX.1"
)
.Left = 10
.Top = 10
.Width =
Me
.Width / 2 - .Left
Call
UpdateSettings(Controls(.Name))
End
With
With
Controls.Add(
"FORMS.TEXTBOX.1"
)
.Left =
Me
.Width / 2
.Top = 35
End
With
Call
UpdateSettings(
Me
)
End
Sub
Private
Sub
UserForm_Resize()
Dim
objControl
As
MSForms.Control
Dim
vntDataUF
As
Variant
Dim
vntDataCTL
As
Variant
vntDataUF = GetSettings(
Me
)
For
Each
objControl
In
Controls
vntDataCTL = GetSettings(objControl)
If
UBound(vntDataCTL) >= 0
Then
objControl.Width = vntDataCTL(2) *
Me
.Width / vntDataUF(2)
Call
UpdateSettings(objControl)
Else
objControl.Left = objControl.Left +
Me
.Width - vntDataUF(2)
End
If
Next
Call
UpdateSettings(
Me
)
End
Sub
Private
Function
GetSettings(Obj
As
Object
)
As
Variant
GetSettings = Split(Obj.Tag,
";"
)
End
Function
Private
Sub
UpdateSettings(Obj
As
Object
)
Obj.Tag = Join(Array(Obj.Left, Obj.Top, Obj.Width, Obj.Height),
";"
)
End
Sub