إزالة إطار الـ Userform
كيفية إخفاء الحدود على نموذج مستخدم _( Userform ) _باستخدام VBA
وUserform بدون شريط العنوان وزر X فهي الآن أكثر جمالا من Userform العادي.
إنشاء نموذج مستخدم _ ( Userform ) _ بمثل هذا الشكل له جاذبية أكثر ومزيد من التفاعل من قبل
المستخدم وخاصة مع شاشات البداية .
نتطرق إلى الكود البرمجي المستخدم لعمل ذلك .
الخطوات :
- الكود المستخدم يوضع داخل موديول .
- نقوم بتسمية الموديول من خلال الخصائص بإسم HideTitleBar .
'Permits any person to use this code provided that the source is mentioned
'https://elshriefacademy.blogspot.com
Option Explicit
Option Private Module
Public Const GWL_STYLE = -16
Public Const WS_CAPTION = &HC00000
#If VBA7 Then
Public Declare PtrSafe Function GetWindowLong _
Lib "user32" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Public Declare PtrSafe Function SetWindowLong _
Lib "user32" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Public Declare PtrSafe Function DrawMenuBar _
Lib "user32" ( _
ByVal hWnd As Long) As Long
Public Declare PtrSafe Function FindWindowA _
Lib "user32" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
#Else
Public Declare Function GetWindowLong _
Lib "user32" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong _
Lib "user32" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Public Declare Function DrawMenuBar _
Lib "user32" ( _
ByVal hWnd As Long) As Long
Public Declare Function FindWindowA _
Lib "user32" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
#End If
Sub HideTitleBar(frm As Object)
Dim lngWindow As Long
Dim lFrmHdl As Long
lFrmHdl = FindWindowA(vbNullString, frm.Caption)
lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
lngWindow = lngWindow And (Not WS_CAPTION)
Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)
Call DrawMenuBar(lFrmHdl)
End Sub
تلميحات
ستعمل هذه الميزة مع إصدارات 32 بت و 64 بت من إكسيل.
في كل مرة يتم فيها تشغيل الـ Userform ، فإنه يستدعي البرنامج الفرعي UserForm_Initialize ويخفي شريط العنوان.
كيفية استخدام الكود أعلاه .
نضع بحدث الـ Initialize للـ Userform
الكود التالي :
'Permits any person to use this code provided that the source is mentioned
'https://elshriefacademy.blogspot.com
Private Sub UserForm_Initialize()
HideTitleBar Me
End Sub