Please, help!!! How to keep userform from being moved?

G

Guest

I can not find "movable" property for the form. So, how can i prevent user
from moving it around?
Thanks
 
G

gwoodby

I can not find "movable" property for the form. So, how can i prevent user
from moving it around?
Thanks

*** Place this code In a User Form ***

Option Explicit

Private Sub UserForm_Initialize()

Call RemoveCaption(Me)

End Sub

*** Place this code In a Module ***

Option Explicit

Private Declare Function FindWindow Lib "User32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Declare Function GetWindowLong Lib "User32" _
Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long) 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 Declare Function DrawMenuBar Lib "User32" ( _
ByVal hwnd As Long) As Long

Sub RemoveCaption(objForm As Object)

Dim lStyle As Long
Dim hMenu As Long
Dim mhWndForm As Long

If Val(Application.Version) < 9 Then
mhWndForm = FindWindow("ThunderXFrame", objForm.Caption) 'XL97
Else
mhWndForm = FindWindow("ThunderDFrame", objForm.Caption)
'XL2000+
End If
lStyle = GetWindowLong(mhWndForm, -16)
lStyle = lStyle And Not &HC00000
SetWindowLong mhWndForm, -16, lStyle
DrawMenuBar mhWndForm

End Sub

Sub ShowForm()

UserForm1.Show False

End Sub
 
C

Chip Pearson

There is no simple way to do this. Which begs the question, why would you
want to prevent the user from moving the form? Personally, I would not
appreciate it if some program locked up display positions.

If you want the form top open at a particular location, such as next to a
specific cell, see the code at
http://www.cpearson.com/Excel/FormPosition.htm .

If you want to keep the form within the bounds of the main Excel window or
the window of a workbook, see the code at
http://www.cpearson.com/Excel/SetParent.aspx .

--
Cordially,
Chip Pearson
Microsoft MVP - Excel, 10 Years
Pearson Software Consulting
www.cpearson.com
(email on the web site)
 
T

Tim Zych

Why would you need to prevent that? Is business logic dependent on the x,y
position of the top-left?
 
G

gwoodby

*** Place this code In a User Form ***

Option Explicit

Private Sub UserForm_Initialize()

Call RemoveCaption(Me)

End Sub

*** Place this code In a Module ***

Option Explicit

Private Declare Function FindWindow Lib "User32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Declare Function GetWindowLong Lib "User32" _
Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long) 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 Declare Function DrawMenuBar Lib "User32" ( _
ByVal hwnd As Long) As Long

Sub RemoveCaption(objForm As Object)

Dim lStyle As Long
Dim hMenu As Long
Dim mhWndForm As Long

If Val(Application.Version) < 9 Then
mhWndForm = FindWindow("ThunderXFrame", objForm.Caption) 'XL97
Else
mhWndForm = FindWindow("ThunderDFrame", objForm.Caption)
'XL2000+
End If
lStyle = GetWindowLong(mhWndForm, -16)
lStyle = lStyle And Not &HC00000
SetWindowLong mhWndForm, -16, lStyle
DrawMenuBar mhWndForm

End Sub

Sub ShowForm()

UserForm1.Show False

End Sub

Found it on the internet and it works, :)
 
G

Guest

I am trying to prevent user from seeing the spreadsheet, so the form will
cover it up
 
B

Bill Renaud

<<I am trying to prevent user from seeing the spreadsheet, so the form will
cover it up.>>
Why not just hide the worksheet, until the form is dismissed?
 

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