غیر فعال کردن دکمه بستن در یوزر فرم اکسل
- آخرین بروزرسانی: 31 اردیبهشت 1402
غیر فعال کردن دکمه بستن در یوزر فرم اکسل خیلی وقتها میشه که ما یک برنامهای طراحی کردیم تحت اکسل بعد از آن می خواهیم در یوزر فرم دکمه بستن یا همان دکمه Close بالا غیر فعال بشه و فقط کاربر بتواند اون دکمه که ما قرار داریم برای بستن فرم از آن استفاده کند برای این منظور آموزش بالا را به صورت کامل مشاهده فرمایید کدی که در قسمت پایین براتون قرار دادم را به صورت کامل مطابق با آموزش وارد محیط کد نویسی ویژوال بیسیک اکسل شوید و کد مربوطه را در قسمت گفته شده قرار بدهید
غیر فعال کردن دکمه بستن در یوزر فرم اکسل

غیر فعال کردن دکمه بستن در یوزر فرم اکسل
آموزش های پیشنهادی برای شما
قبل از هر کاری آموزش زیر را مشاهده فرمایید👇
نحوه ذخیره فایل اکسل حاوی ماکرو
نحوه ورود به محیط vba اکسل با 3 روش
پیشنهاد آکادمی روح الله برای شما
برای وارد شدن در محیط کد نویسی vba اکسل می توانید از روش های خیلی زیادی استفاده کنید یک آموزش به صورت کامل برای نحوه وارد شدن در محیط کد نویسی vba در اکسل به صورت کامل آموزش دادیم و روی سایت موجود هستند این لینک شاه قرار میدم پایین همین صفحه میتونید وارد اون آموزش بشید و روشهای وارد شدن در محیط ویژوال بیسیک اکسل را به صورت کامل یاد بگیرید
برای وارد شدن در محیط کد نویسی اکسل ساده ترین روش با فشردن دکمه Alt + F11 وارد ویرایشگر VBA اکسل شوید. با این روش میتونیم به راحتی وارد محیط ویژوال بیسیک شوید
|
1 2 3 4 |
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 'https://academyruhollah.com/ If CloseMode = vbFormControlMenu Then Cancel = 2 End Sub |
در آخر این هم بود از آموزش غیر فعال کردن دکمه بستن در یوزر فرم اکسل
اگر این آموزش را دوست داشتید و مورد پسند بود در قسمت پایین همین صفحه قسمت دیدگاه ها نظر خودتون را برای من بنویسید خوشحال میشم این هم بود از آموزش رایگان اکسل

پنهان کردن کلوز یا ضربدر روی فرم چونگه است
سلام ارادت خدمت شما دوست عزیز برای این کار
نکته مهم (اول بخون)
در VBA بهصورت مستقیم گزینهای برای مخفیکردن ضربدر (❌ Close) یوزرفرم وجود ندارد
اما با یک ترفند حرفهای از Windows API میشود این کار را انجام داد ✔️
روی ویندوز ۷ و ۱۰ هم جواب میدهد.
✅ روش حرفهای مخفی کردن دکمه ضربدر یوزرفرم
1️⃣ کد API (یکبار اضافه کن)
داخل Module این کد را قرار بده:
#If VBA7 Then
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As LongPtr, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
#Else
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
#End If
Public Const GWL_STYLE = -16
Public Const WS_SYSMENU = &H80000
2️⃣ کد داخل یوزرفرم
در UserForm و رویداد Initialize بنویس:
Private Sub UserForm_Initialize()
Dim hWndForm As LongPtr
Dim style As Long
hWndForm = FindWindow(vbNullString, Me.Caption)
If hWndForm <> 0 Then
style = GetWindowLong(hWndForm, GWL_STYLE)
style = style And Not WS_SYSMENU
SetWindowLong hWndForm, GWL_STYLE, style
End If
End Sub
✅ بعد از اجرا، دکمه ❌ کاملاً حذف میشود.
🧠 پیشنهاد حرفهای
وقتی ضربدر را حذف میکنی حتماً:
یک دکمه خروج یا بازگشت روی فرم بگذار
خروج را کنترلشده انجام بده
مثلاً:
Private Sub cmdExit_Click()
Unload Me
End Sub
⚠️ نکات مهم
Caption یوزرفرم نباید خالی باشد
اگر نام فرم تغییر کند مشکلی نیست، Caption ملاک است
روی Excel 32bit و 64bit سازگار