اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

السلام عليكم الاخوة الافاضل عندي مشكلة مش عارف حلها عملت كل حاجة وبتفشل انا عندي فورم لملف اكسل ومصمم فيه انه عند الفتح يغلق ملف الاكسل ويفتح فورم رقم 1 هو تمام شغال ولكن اول ما يفتح الفورم مقدرش افتح اي ملف اكسل تاني غيرت في اكواد فتح البرنامج ولما فتحت ملف اخر عند الاغلاق يغلق الملف ويفتح الملف الاساسي اللي مصمم عليه الفورم بدون ان اطلب فتحه حاولت كتير مش قادر اوصله ممكن المساعدة 

قام بنشر (معدل)

وعليكم السلام ورحمة الله وبركاته

لم توضح لنا ما هي الاكواد التي جربتها ولم تنجح لكي لا تكررها

اذا كان السطر Application.Visible = False موجود ضمن الكود فهذا السطر يخفي برنامج إكسل من الجذور، مما يجعل أي ملف إكسل آخر تفتحه مخفياً أو غير قابل للوصول

ويمكن استبدالها   ThisWorkbook.Windows(1).Visible = False  

 كذلك يكون الفورم  vbModeless

ضع الكودين  في ThisWorkbook

Private Sub Workbook_Open()
    UserForm1.Show vbModeless
    ThisWorkbook.Windows(1).Visible = False
End Sub

وع

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Application.Visible = True
End Sub

 

تم تعديل بواسطه عبدالله بشير عبدالله
  • Like 1
قام بنشر

استاذي الكود تمام بس في حاجة انا عايز لما افتح الفورم الغي الشاشة الزرقاء اللي بتكون خلف الفورم الخاصة بالاكسل عايز الفورم فقط هو اللي ظاهر وكمان عند فتح اي ملف اخر بيكون الفورم فوق الملف 

1.jpg

قام بنشر

جرب التعديلات الاتية

في ThisWorkbook ضع الكود التالي

Private Sub Workbook_Open()
    Application.Visible = False
        UserForm1.Show vbModeless
End Sub

حتى يظل الفورم ظاهراً فوق أي ملف إكسل آخر تفتحه، أضف الجزئية في اعلي اكواد الفورم

 

#If VBA7 Then
    Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hwnd As LongPtr, ByVal hWndInsertAfter As LongPtr, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
#Else
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If

Const HWND_TOPMOST = -1
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1

قم باضافة هذا الكود للفورم

Private Sub UserForm_Initialize()
    Dim hwnd As LongPtr
    hwnd = FindWindow("ThunderDFrame", Me.Caption)
    If hwnd <> 0 Then
        SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    End If
End Sub

واخيرا في ThisWorkbook ضع الكود التالي

 

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Application.Visible = True
    ThisWorkbook.Save
    ThisWorkbook.Close
End Sub

وكنت سارفق لك رابط لاخينا واستاذنا Foksh به حل للمشكلة ولكن وجدت انك صاحب الطلب نفسه فعدلت عن ذلك

وهذا كل ما لدي لجل المشكلة وبالاستعانة ببرامج الذكاء الاصطناعي

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information