stopping userform resize on minimize

H

hughie

Using Stephen Bullen's form fun, I've got a form minimizing (huzzah!)
but the UserForm_Resize event is not exiting when it should. ie, the
line:

If Me.InsideWidth = 0 Then Exit Sub

doesn't have an InsideWidth of 0 during a minimize (nor does it seem to
in his frmTest, but it still works, it shouldn't!).

...anyone know the syntax for trapping a minimize event? I tried
application.windowstate but was getting -4143 in all cases.

Hughie
 
M

Mike Woodhouse

Using Stephen Bullen's form fun, I've got a form minimizing (huzzah!)
but the UserForm_Resize event is not exiting when it should. ie, the
line:

If Me.InsideWidth = 0 Then Exit Sub

doesn't have an InsideWidth of 0 during a minimize (nor does it seem to
in his frmTest, but it still works, it shouldn't!).

..anyone know the syntax for trapping a minimize event? I tried
application.windowstate but was getting -4143 in all cases.

Application.WindowState is probably going to refer to Excel, not your
form, so it's not much use. From a quick check (I have Excel 2002 here)
a UserForm doesn't obviously expose a WindowState, which is annoying,
but unsurprising, since it doesn't naturally offer Minimize or
Maximize. Since a UserForm doesn't naturally support resizing anyway,
it kind of makes you wonder why the Resize event is there at all.

But using Stephen's CFormChanger to make the form Resizeable lets it
trap the event - go figure.

So I took a form, added CFormChanger to my project and put this code in
UserForm1:

Option Explicit

Dim mclsChanger As CFormChanger

Private Sub UserForm_Initialize()

Set mclsChanger = New CFormChanger

With mclsChanger
Set .Form = Me
.ShowMinimizeBtn = True
.ShowMaximizeBtn = True
.Sizeable = True
End With

End Sub

Private Sub UserForm_Resize()
Debug.Print "Resize", Me.Width, Me.Height
End Sub


Seems to me that UserForm_Resize() fires when I resize by dragging,
minimize or maximise. Isn't that what you wanted? What am I missing
here?

Mike
 
P

Peter T

Suppose I should also have cited the example I posted in the same thread in
response to providing minimize/maximize for a modal form, though others
quite reasonably pointed out there doesn't seem much point in doing that
with a modal form!

Regards,
Peter T
 
H

hughie

Seems to me that UserForm_Resize() fires when I resize by dragging,
minimize or maximise. Isn't that what you wanted? What am I missing
here?

well, when the UserForm_Resize() event fires during a minimize, I'm
getting a runtime error (308, property less than zero) because the code
tries to set control heights and widths in relation to 'me.height' and
'me.width'.

What I discovered through your 'debug.print' technique which I had
forgotten about, was that the 'me.height' property was reporting itself
as 23.25 and later I was subtracting 41 from it generating the runtime
error.

Therefore, all I've done is check for a value just over the one it
thinks it is during a minimize event (why is it 23.25? go figure) ie:

If Me.Height < 25 Then Exit Sub

...and all is well.

Much appreciated all your help. Isn't it a nice thing that folk take
the time and trouble to help out :)

gasho,
Hughie
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top