السلام عليكم
استخدمت هذا الكود لأجل اظهار اليوزرفورم فقط و اخفاء ملف العمل فقط
في حالة فتح عدة ملفات لا يختفي الا هذا الملف فقط
المرجو منكم مراجعة هذا الكود , هل هو فعال لما اريد ؟
شكرا لكم
استخدمت هذا الكود لأجل اظهار اليوزرفورم فقط و اخفاء ملف العمل فقط
في حالة فتح عدة ملفات لا يختفي الا هذا الملف فقط
المرجو منكم مراجعة هذا الكود , هل هو فعال لما اريد ؟
شكرا لكم
ThisWorkbook
UserForm
Module
Classmodul
لمشاهدة الروابط يلزمك التسجيل في أكاديمية الصقر للتدريبOption Explicit
Public WithEvents AppXL As Application
Private Sub AppXL_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
If Application.Workbooks.Count = 2 Then
Application.Visible = False
If UserFormVisible = False Then UserForm1.Show vbModeless
Else
ThisWorkbook.Windows(1).Visible = False
End If
End Sub
UserForm
Private Sub UserForm_Initialize()
UserFormVisible = True
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim FM
If Application.Workbooks.Count = 1 Then
If Application.Visible = False Then
FM = MsgBox(prompt:=" " & vbLf & _
"Voulez-vous réellement fermer ?", Buttons:=vbOKCancel)
If FM = vbOK Then
If Not AppClass Is Nothing Then Set AppClass = Nothing
ThisWorkbook.Save
'ThisWorkbook.Close
Application.Quit
Else
Cancel = True
End If
End If
Else
If Application.Visible = True Then
FM = MsgBox(prompt:=" " & vbLf & _
"Voulez-vous réellement fermer ?", Buttons:=vbOKCancel)
If FM = vbOK Then
If Not AppClass Is Nothing Then Set AppClass = Nothing
ThisWorkbook.Save
ThisWorkbook.Close
Else
Cancel = True
End If
End If
End If
End Sub
Module
Option Explicit
Public AppClass As New Classe1
Public UserFormVisible As Boolean
Classmodul
Option Explicit
Public WithEvents AppXL As Application
Private Sub AppXL_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
If Application.Workbooks.Count = 2 Then
Application.Visible = False
If UserFormVisible = False Then UserForm1.Show vbModeless
Else
ThisWorkbook.Windows(1).Visible = False
End If
End Sub
أفضل إجابة مقدمة من
hassona229
وهي:
جرب هذا التعديل
وعليكم السلام ورحمه الله وبركاته
وعليكم السلام ورحمه الله وبركاته
ThisWorkbook
Option Explicit
Private Sub Workbook_Open()
If Windows(ThisWorkbook.Name).Visible = True Then Windows(ThisWorkbook.Name).Visible = False
Set AppClass.AppXL = Application
If Application.Workbooks.Count = 1 Then
Application.Visible = False
Windows(ThisWorkbook.Name).Visible = False
Else
Windows(ThisWorkbook.Name).Visible = False
End If
UserForm1.Show vbModeless
End Sub
UserForm
Private Sub CommandButton1_Click()
Windows(ThisWorkbook.Name).Visible = True
End Sub
Private Sub UserForm_Initialize()
UserFormVisible = True
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim FM
If Application.Workbooks.Count = 1 Then
If Windows(ThisWorkbook.Name).Visible = False Then
FM = MsgBox(prompt:=" " & vbLf & _
"Voulez-vous réellement fermer ?", Buttons:=vbOKCancel)
If FM = vbOK Then
If Not AppClass Is Nothing Then Set AppClass = Nothing
ThisWorkbook.Save
'ThisWorkbook.Close
Application.Quit
Else
Cancel = True
End If
End If
Else
If Application.Visible = True Then
FM = MsgBox(prompt:=" " & vbLf & _
"Voulez-vous réellement fermer ?", Buttons:=vbOKCancel)
If FM = vbOK Then
If Not AppClass Is Nothing Then Set AppClass = Nothing
ThisWorkbook.Save
ThisWorkbook.Close
Else
Cancel = True
End If
End If
End If
End Sub
Classmodul
Option Explicit
Public WithEvents AppXL As Application
Private Sub AppXL_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
If Application.Workbooks.Count = 2 Then
Windows(ThisWorkbook.Name).Visible = False
If UserFormVisible = False Then UserForm1.Show vbModeless
Else
Windows(ThisWorkbook.Name).Visible = False
End If
End Sub
أعجبني أعجبك هذاإلغ اعجابي 0