Border style of Excel forms

  • Thread starter Thread starter Shu
  • Start date Start date
S

Shu

Hello,
Why the form in Excel can not be set with some maximize or
minimize icon on the top ritht of form. Only two options
are provided in Excel VBE. One is 0-frmborderStylenone,
the other is 1-frmborderstylesingle. But There are more
choices in VB.

Is there any way to set up them?

Thanks very much.

Rgds
Shu
 
Hi Shu;
Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function SetWindowLong& Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)
Private Declare Function EnableWindow& Lib "user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function ShowWindow& Lib "user32" (ByVal hWnd&, ByVal nCmdShow&)

' Minimize in application
Private Sub UserForm_Initialize()
Dim Style As Long
' Min: &H20000 / Max: &H10000 / Resize: &H40000
Style = &H84C80080 Or &H20000 Or &H40000
SetWindowLong FindWindow(vbNullString, Me.Caption), -16, Style
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub

To reduce the userform in the Taskbar, add the procedure:
' Minimize in TaskBar
Private Sub UserForm_Activate()
Dim hWnd As Long
hWnd = FindWindow(vbNullString, Me.Caption)
ShowWindow hWnd, 0
SetWindowLong hWnd, -20, &H40101
ShowWindow hWnd, 1
End Sub

Regards
MP
 
Hi Shu;
In complement of my post, you can use the following procedure to display the
userform in no modal mode:

Sub NoModalMode()
#If VBA6 Then
UserForm1.Show 0
#Else
UserForm1.Show
#End If
End Sub

MP
 
Thanks a lot, Michel.

Shu
-----Original Message-----
Hi Shu;
Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function SetWindowLong& Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)
Private Declare Function EnableWindow& Lib "user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function ShowWindow& Lib "user32" (ByVal hWnd&, ByVal nCmdShow&)

' Minimize in application
Private Sub UserForm_Initialize()
Dim Style As Long
' Min: &H20000 / Max: &H10000 / Resize: &H40000
Style = &H84C80080 Or &H20000 Or &H40000
SetWindowLong FindWindow(vbNullString, Me.Caption), - 16, Style
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub

To reduce the userform in the Taskbar, add the procedure:
' Minimize in TaskBar
Private Sub UserForm_Activate()
Dim hWnd As Long
hWnd = FindWindow(vbNullString, Me.Caption)
ShowWindow hWnd, 0
SetWindowLong hWnd, -20, &H40101
ShowWindow hWnd, 1
End Sub

Regards
MP

"Shu" <[email protected]> a écrit dans le message de



.
 

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

Back
Top