Maybe I am on the right path now with this. If I do this:

Unload UserForm1
UserForm1.Caption = "Testing"
AddMaxMin
UserForm1.Show 0

Sub AddMaxMin()

Dim hWnd As Long

hWnd = FindWindow(vbNullString, UserForm1.Caption)
SetWindowLong hWnd, -16, &H20000 Or &H10000 Or &H84C80080

End Sub

It seems to work. Will see if this is all really workable.


RBS


"Bob Phillips" <bob.phillips@notheretiscali.co.uk> wrote in message
news:OsgSLNBHFHA.2356@TK2MSFTNGP12.phx.gbl...
> If you change the name of the form, you cannot use the old name in the
> initialize code.
>
> Why not use?
>
> Private Sub UserForm_Initialize()
> Dim hWnd As Long
>
> hWnd = FindWindow(vbNullString, Me.Caption)
> SetWindowLong hWnd, -16, &H20000 Or &H10000 Or &H84C80080
>
> End Sub
>
>
>
> --
>
> HTH
>
> RP
> (remove nothere from the email address if mailing direct)
>
>
> "RB Smissaert" <bartsmissaert@blueyonder.co.uk> wrote in message
> news:%23HpgJ3AHFHA.1392@TK2MSFTNGP10.phx.gbl...
>> How do I add minimize and maximize buttons to a VBA userform?
>> I have this code that does it, but when I change the caption of the

> userform
>> the buttons don't work anymore. I am slowly coming to the conclusion that
>> it probably is not worth the trouble and that it is better to make your

> own
>> buttons.
>>
>> Public Declare Function FindWindow _
>> Lib "user32" Alias _
>> "FindWindowA" (ByVal lpClassName As Long, _
>> ByVal lpWindowName As Long)
>>
>> Private Declare Function SetWindowLong _
>> Lib "user32" _
>> Alias "SetWindowLongA" (ByVal hwnd As Long, _
>> ByVal nIndex As Long, _
>> ByVal dwNewLong As Long) As Long
>>
>> Private Sub UserForm_Initialize()
>>
>> Dim hWnd as Long
>>
>> hWnd = FindWindow(vbNullString, UserForm1.Caption)
>> SetWindowLong hWnd, -16, &H20000 Or &H10000 Or &H84C80080
>>
>> End Sub
>>
>>
>> RBS
>>

>
>