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

نجوم المشاركات

  1. محمد حسن المحمد

    • نقاط

      11

    • Posts

      2221


  2. ياسر العربى

    ياسر العربى

    الخبراء


    • نقاط

      9

    • Posts

      1510


  3. الصـقر

    الصـقر

    الخبراء


    • نقاط

      8

    • Posts

      1836


  4. Yasser Fathi Albanna

    Yasser Fathi Albanna

    06 عضو ماسي


    • نقاط

      6

    • Posts

      1313


Popular Content

Showing content with the highest reputation on 11/21/15 in مشاركات

  1. خامساً :- كيفية اضافه عناصر تحكم داخل الــ Frame مع التحكم فى الاسكرول بار وذالك عند فتح الفورم او اثناء العمل على الفورم وهو نشط العنوان يبدو انه غريب شوية ومعقد انا بس محتاج من حضرتك تشرب كوباية شاى وتفتح زهنك معايا لان ده شغل محترفين والحمد لله احنا مشينا مشوار طويل فلازم يكون عندك ثقه بنفسك وتقتحم الصعاب وميهمكش طالما انت فى جامعه اوفيسنا بص يا سيدى العنوان ده بختصار ماذا يعنى ؟ طبعا احنا عارفين ان علشان اصمم عنصر تحكم لازم يكون من شاشة التصميم لكن انت عمرك فكرة او خطر ببالك انك تخلق أو تنشئ عنصر تحكم وانت شغال على الفورم مش فى مرحلة التصميم !!!!!! طبعا انتو عارفين انى اناعملى وعلشان افهم لازم اعمل مثال عملى فبالمثال يتضح لنا المقال شوف الصوره دى وخليك معايا اوعى تغمض عنيك هو ده موضوعنا اليوم ازاى نصمم اى عنصر تحكم اثناء فتح الفورم بكود فى حدث فتح الفورم او اثناء عمل الفورم تعالو على سبيل المثال نعمل كود فى حدث فتح الفورم Initialize كدا انا عملت سطر الاعلان عن المتغير وقمت بتسميته Label ( وممكن تسميه اى اسم كيفما شئت ولكن كما قلت افضل تسميته طبقا لاسم عنصر التحكم ) وقلت ان نوع المتغير من النوع MSForms.Label وعايز احول المتغير ده الى كائن بحيث اعرفه واقدر اتعامل معاه فأستخدمت set وهذه الكلمة هى لتحويل المتغير الى كائن القاعده الخاصه بـ Set هى الكائن = المتغير set الكائن = Set Label ما هو الكائن ؟؟؟ هو عنصر تحكم هيتم اضافته على الفورم Controls.Add ( تعنى اضافه عنصر ) القاعدة العامه للـ Controls.Add هى (Controls.Add(ProgID, Name ,Visible الجزء الثالث , الجزء الثانى , الجزء الاول الجزء الاول :- ProgID يكون اجبارى الادخال وهو يكون احدى عناصر الفورم كالتالى الجزء الثانى :-Name هو اسم العنصر اللى هيتم استخدامه فى كتابة الاكواد وهو يقوم بدور الخاصيه Name فى شاشة الخصائص ويكون تعبئة اختياريا ولكن يفضل كتابتة اذا كنت تريد التعامل مع هذا العنصر فيما بعد الجزء الثالث:-Visible ويكون تعبئة اختياريا وهو يحمل خيارين أما True أو False ويفضل عدم استخدامه ليه يا عمنا ؟ لان طالما فكرت تنشأ عنصر تحكم اثناء عملك على الفورم اذا انت اكيد عايز تظهره للمستخدم مش انك هتخفية ! اذن لما نيجى نحول المتغير الى كائن لنستطيع التعامل معه هنستخدم قاعدة Set وهيكون كالتالى Set label = Controls.Add("forms.label.1", "label") هنا فى قاعدة Controls.Add قمت بتعبئة الجزء الاول ProgID وهو "forms.label.1" وتم وضعه بين علمتى تنصيص والجزء الثانى Name هو "label" وتم وضعه بين علامتى تنصيص وهو هيكون اسم العنصر فى كتابة الاكود الجزء الثالث Visible كما قلت انه اختيارى فلم اقم بتعبئته لذالك سيقوم الفيجوال بيسك باستخدام True بشكل افتراضى كدا وصلنا بالكود الى الان كالتالى Private Sub UserForm_Initialize() Dim label As MSForms.label Set label = Controls.Add("forms.label.1", "label") End Sub طيب انا كدا قمت بتصميم العنصر Label وعايز اعمل له خصائص على سبيل المثال اسم الليبل يكون " الصقر " يبعد عن الضلع الايسر للفورم بمقدار 100 عرضه يكون 120 يبعد عن الضلع الاعلى للفورم بمقدار 50 الخلفيه تكون حمراء محازة النص يكون بالمنتصف حجم الخط 20 سماكة الخط عريض التاثير يكون بارز طبعا الكلام ده شرحناه فى دروس الليبل وهيكون كالتالى فى الكود Private Sub UserForm_Initialize() Dim label As MSForms.label Set label = Controls.Add("forms.label.1", "label") With label .Caption = "ÇáÕÞÑ" .Left = 100 .Width = 120 .Top = 50 .BackColor = &HFF& .TextAlign = fmTextAlignCenter .Font = 20 .Font.Bold = True .SpecialEffect = fmSpecialEffectRaised End With End Sub شاهد الصوره عند تشغيل الفورم عايزك تجرب تنشئ عنصر تحكم او عناصر تحكم غير الليبل لازم تجرب بنفسك يا عبدالتواب ناخد مثال اخر مثلا الكمبوبوكس شاهد الكود كالتالى ولاحظ الفرق بنفسك Private Sub UserForm_Initialize() Dim Combobox As MSForms.Combobox Set Combobox = Controls.Add("forms.Combobox.1", "Combobox") With Combobox .Left = 100 .Width = 120 .Top = 50 .BackColor = &HFF& .TextAlign = fmTextAlignCenter .Font = 20 .Font.Bold = True .SpecialEffect = fmSpecialEffectRaised .RowSource = "A2:A10" End With End Sub شاهد الصوره عند فتح الفورم طبعا دى كلها مقدمه للدرس بتاعنا اللى لسه الى الان مبدأناش الشرح فيه ولكن كان لازم نعرف يعنى ايه نضيف عنصر تحكم اثناء عمل الفورم وليس من شاشة التصميم للدرس بقية انتظرونا
    4 points
  2. بســــــــــــــــم الله الرحمــــــــــن الرحـــــــــــــــــــــــيم الســــــلام عليكــــــــــــــــم و حمة الله و بركاته اخواننا الكرام ، نظرا لكثرة المشاركات حول تقريب الكسور الارقام ، حبيت اشارككم الوحدة النمطية بـ 3 دوال (RoundUp) (RoundHalf) ( RoundDown) دالة : RoundUp([Number],3) للتقريب رقم 33.3333 الى 3.334 او 3.3331 الى 3.334 و هكذا دالة: RoundHalf([Number],3) للتقريب رقم 33.3336 الى 3.334 او 3.3335 الى 3.333 و هكذا و السبب تسمية الدالة بهذالاسم ، وجود دالة باسم Round في الاكسس و انا سميتها RoundHalf دالة: RoundDown([Number],3) للتقريب رقم 33.3336 الى 3.333 او 3.2231 الى 3.223 و هكذا و المرفق يحوي ملفين الاول للعرض ارقام مقربة حسب تنسيق مثلا: عند اختيار اربع منازل أعشار 5.4400 ، 5.4444 ,5.2000 و الثاني بدون تنسيق مثلا : 5.4444 ، 5.44 , 5.2 ابو عارف Round-RowndUp-RowndDown.rar
    3 points
  3. السلام عليكم الاستاذ الفاضل / ابو سليمان شكرا جزيلا على مرور حضرتك المحفز .. جزاك الله خيرا اخى الكريم جرب المرفق فلترة.rar
    3 points
  4. استعمل هذا الكود Sub DeleteAllPics() Dim Pic As Object For Each Pic In ActiveSheet.Pictures Pic.Delete Next Pic End Sub
    3 points
  5. السلام عليكم - خاطرة: كيف نستخدم دالة الجمع باستخدام اختصارات لوحة المفاتيح بطريقة سلسة وسريعة:
    3 points
  6. اخى الفاضل / ياسر فتحى اولا اعتذر لحضرتك عن التاخر بالرد لكن لم ادخل الموقع من يومين شاكر لحضرتك مجهودك الطيب واسال الله تعالى ان يكون بميزان حسناتكم وان يكون علم نافع بخصوص الملاحظات لن ازيد عن ما قاله الاخ ياسر العربى ارجوا من حضرتك تداركها تقبل منى وافر الاحترام والتقدير
    3 points
  7. Sub CollectDataFromMultipleWorkbooks() Dim OpenFiles Dim crntfile As Workbook Set crntfile = Application.ActiveWorkbook Dim X As Integer Dim SH As Worksheet Dim Arr, Temp, I As Long, J As Long On Error GoTo ErrHandler Application.ScreenUpdating = False OpenFiles = Application.GetOpenFilename(FileFilter:="Microsoft Excel Files (*.csv;*.xlsx;.xlsm),*.csv;*.xlsx;*.xlsm", MultiSelect:=True, Title:="Select Excel File To Merge!") If TypeName(OpenFiles) = "Boolean" Then MsgBox "You Need To Select At Least One File" GoTo ExitHandler End If X = 1 While X <= UBound(OpenFiles) Workbooks.Open Filename:=OpenFiles(X) Sheets().Move After:=crntfile.Sheets(crntfile.Sheets.Count) X = X + 1 Wend Sheets("Master").Activate For Each SH In ThisWorkbook.Sheets With SH If .Name <> "Master" Then Arr = .Range("A1").CurrentRegion.Value For I = 1 To UBound(Arr) Temp = Split(Arr(I, 1), ";") For J = 1 To UBound(Temp) .Cells(I, J) = Temp(J) Next J Next I .Range("A1").CurrentRegion.Columns.EntireColumn.AutoFit End If End With Next SH ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub أخي الحبيب مختار بارك الله فيك على الكود الرائع الذي قدمته لنا على طبق من ذهب أخي الكريم صاحب الموضوع ..يرجى تغيير اسم الظهور للغة العربية (راجع التوجيهات في الموضوعات المثبتة في المنتدى) جرب الملف التالي بعد إضافة بسيطة لكود الأخ المتميز مختار ليقوم بفصل العمود الواحد لعدة أعمدة تقبل تحياتي Collect Data From Multiple CSV Workbooks Mokhtar V1.rar
    2 points
  8. راجع كود "TextBox7_Change" لايوجد اي تعيين للعمود 9 في الليست بوكس لذا قم بإدراج السطر التالي ليأخذ عنوان خلية نتيجة البحث ويدرجها في العمود 9 لليست بوكس ListBox9.List(V, 9) = q.Address الصقه قبل السطر V = V +1 ثم الغي تحديد نوع القيم في كود "ListBox9_Click" مثال ComboBox3.Text حطيته يستقبل نص .Range(DADA).Value ويساوي قيمة ؟ Private Sub ListBox9_Click() Sheets("sheet2").Select Dim DADA As String Dim MySh As Worksheet 'On Error GoTo 1 DADA = ListBox9.List(ListBox9.ListIndex, 9) Set MySh = Sheets("sheet2") With MySh .Application.Range(DADA).Activate ComboBox3.Text = .Range(DADA).Value ComboBox2.Text = .Range(DADA).Offset(0, 1).Value TextBox4.Text = .Range(DADA).Offset(0, 2).Value TextBox5.Text = .Range(DADA).Offset(0, 3).Value TextBox6.Text = .Range(DADA).Offset(0, 4).Value TextBox7.Text = .Range(DADA).Offset(0, 5).Value ComboBox1.Text = .Range(DADA).Offset(0, 6).Value End With End Sub لذا ليس ضروري تحديد قيمة اتركه بدون وفعل سطر الخروج من الكود في حالة حدوث خطاء 'On Error GoTo 1 وهذا الكود حدث ListBox9_Click بعد تعديل الاخطاء المذكوره اعلاه Private Sub ListBox9_Click() Sheets("sheet2").Select Dim DADA As String Dim MySh As Worksheet On Error GoTo 1 DADA = ListBox9.List(ListBox9.ListIndex, 9) Set MySh = Sheets("sheet2") With MySh .Application.Range(DADA).Activate ComboBox3 = .Range(DADA) ComboBox2 = .Range(DADA).Offset(0, 1) TextBox4 = .Range(DADA).Offset(0, 2) TextBox5 = .Range(DADA).Offset(0, 3) TextBox6 = .Range(DADA).Offset(0, 4) TextBox7 = .Range(DADA).Offset(0, 5) ComboBox1 = .Range(DADA).Offset(0, 6) End With 1 End Sub
    2 points
  9. السلام عليكم ورحمة الله وبركاته لقد تناولت فى موضوعى السابق " إزالة أو إبقاء آثار التنسيق الشرطى " على الرابط التالى http://www.officena.net/ib/topic/64950-%D8%A5%D8%B2%D8%A7%D9%84%D8%A9-%D8%A3%D9%88-%D8%A5%D8%A8%D9%82%D8%A7%D8%A1-%D8%A2%D8%AB%D8%A7%D8%B1-%D8%A7%D9%84%D8%AA%D9%86%D8%B3%D9%8A%D9%82-%D8%A7%D9%84%D8%B4%D8%B1%D8%B7%D9%89/ كيفية ازالة التنسيق الشرطى و تبعاته من تنسيقات ... أو الابقاء على تلك التبعات والتنسيقات و تحويلها من تنسيقات شرطية الى تنسيقات عادية و اليوم بإذن الله تعالى أقدم لكم كودا بسيطا لكن يمكن أن تكون آثاره و نتائجه من وجهة نظرى المتواضعة جميلة و مبهرة و الرأى لكم فى النهاية الكود : Sub creatingFormats() On Error Resume Next For Each cell In Range("data") Range("formats").Cells(cell.Value).Copy cell.PasteSpecial Paste:=xlPasteFormats Next cell On Error GoTo 0 Application.CutCopyMode = False End Sub الكود يقوم بعمل تنسيقات عادية فى نطاق محدد هو data طبقا لتنسيقات يمكنك تعييرها فى خلايا نطاق آخر هو formats يمكن تطويع هذا الكود فى حال الرغبة فى عمل تنسيقات عادية متعددة داخل نطاق . تحياتى لكم و الى اللقاء بإذن الله تعالى مع كل جديد ومفيد كن حذرا ... أبو ضحكة جنان قاعد لك فى الملف أخوكم مختار حسين محمود الصعيدى تنسيقات بلا حدود.rar تنسيقات بلا حدود.rar
    2 points
  10. السلام عليكم ورحمة الله وبركاته أخى العزيز ناصر المصرى بارك الله فيك ... أشكرك أخى الكريم على هذا الكلام الكبير الذى أسعدنى كثيرا ..و مشكور أيضا على مرورك الكريم أخى و حبيبى و أستاذى الكبير ياسر خليل يعلم الله عز وجل أننى أعتز بأنك أحد أهم الذين تعلمت - ولا زلت أتعلم - منهم ... تقبل الله منا و منكم صالح الاعمال أخى و حبيبى الغالى ياسر فتحى بارك الله فيك ... أشكرك أخى الغالى على هذا التشجيع الكبير و المستمر تقبل الله منا و منكم صالح الاعمال أخى و حبيبى العزيز عبدالغزيز بارك الله فيك ... أشكرك أخى الغالى على كلامك الطيب و مرورك الكريم ... تقبل الله منا و منكم صالح الاعمال
    2 points
  11. السلام عليكم و رحمة الله و بركاته و تحية خاصة للاستاذ جعفر الأخ حسين : اضافة سطر بسيط في الكود السابق ستنحل المشكة ان شاء الله DoCmd.OpenReport "medicine", acViewPreview, , , acHidden DoCmd.SelectObject acReport, "medicine" DoCmd.PrintOut , , , , Me.t3 DoCmd.Close acReport, "medicine" بالتوفيق
    2 points
  12. السلام عليكم ورحمة الله وبركاته جزاكم الله خيراً..وكما يقال :(إيدك معي ) وإن شاء الله سيكون متجدد ..بمشاركاتكم الطيبة. إن صار لي مجال اليوم سأعرض طريقة الفرز حسب الصفوف - فرز أفقي - بالتفصيل إن شاء الله تعالى فكر بحاجة تانية يا عربي ..والسلام عليكم.
    2 points
  13. الله يبارك فيك ياعم الحاج والله ياراجل حاجات مكناش بنبص ليها خالص وعجبتني الفكرة ايه رأيك كل يوم تطبيق اختصار او اتنين
    2 points
  14. تتسم دائما بالموضوعات القيمة بارك الله فيك وفى انتظار كل ماهو جديد من شخصية تتسم بالهدوء والعطاء وافر تقديرى واحترامى
    2 points
  15. السلام عليكم Private Sub ListBox1_Click() ''********************* '' الذهاب الى الورقة المسماه ورقة1 Sheets("ورقة1").Select '' متغير لحفظ قيمة نصيه Dim DADA As String ''MySh متغير لورقة في المصنف للتعبير عن الورقة في الكود بمسمى Dim MySh As Worksheet 'On Error GoTo 1 '' اخذ القيمة من العمود الـ 9 في الليست بوكس والتي هيا عنوان الخليه من السطر المحدد في الليست بوكس DADA = ListBox1.List(ListBox1.ListIndex, 9) ''كتعبير عن الورقة المسماه "ورقة1" MySh تعين المتغير Set MySh = Sheets("ورقة1") ''With ادرج في اطار Myshلتعدداستخدام متغير '' للتعبير عن المتغير بأكثر من سطر دون ذكر المتغير بكل سطر '' . مع التعبير بعلامة With MySh ''للذهاب للخليه المعنيه في البحث Range في تعبير DADA ادراج متغير '' Range.address حفظ فيه عنوان الخليه DADA اعتباراً ان متغير .Application.Range(DADA).Activate ''ComboBox3 وحقظه في DADA اخذ قيمة الخليه من متغير ComboBox3.Text = .Range(DADA).Value ''ComboBox2 مع ازاحه بقدر عمود وحقظه في DADA اخذ قيمة الخليه من متغير ''B1 مع ازاحة عمود ستصبح الخليه المعنيه A1 اي اذا فرضنا الخليه هيا ComboBox2.Text = .Range(DADA).Offset(0, 1).Value ''TextBox4 مع ازاحه بقدر عمودين وحقظه في DADA اخذ قيمة الخليه من متغير TextBox4.Text = .Range(DADA).Offset(0, 2).Value ''TextBox5 مع ازاحه بقدر 3 اعمده وحقظه في DADA اخذ قيمة الخليه من متغير TextBox5.Text = .Range(DADA).Offset(0, 3).Value ''TextBox6 مع ازاحه بقدر 4 اعمده وحقظه في DADA اخذ قيمة الخليه من متغير TextBox6.Text = .Range(DADA).Offset(0, 4).Value ''TextBox7 مع ازاحه بقدر 5 اعمده وحقظه في DADA اخذ قيمة الخليه من متغير TextBox7.Text = .Range(DADA).Offset(0, 5).Value ''ComboBox1 مع ازاحه بقدر 6 اعمده وحقظه في DADA اخذ قيمة الخليه من متغير ComboBox1.Text = .Range(DADA).Offset(0, 6).Value '' Myshالخروج من اطار متغير End With ''********************* End Sub
    2 points
  16. الأعضاء الأعزاء أسعد الله أوقاتكم بكل خير فيما يلي الدرس الأول من دورة "إكسيل 2013 المستوى المتقدم" بعنوان: التنسيق الشرطي المتقدم (المعتمد على المعادلات) سيتم نشر باقي الدروس تباعاً في هذا الموضوع بالإضافة الى نشر كل درس في موضوع مستقل خاص به لسهولة الوصول الى كافة الدروس... فانتظرونا ***ملاحظات*****... ملاحظة 1/ المتطلب السابق لهذه الدورة: معرفة جيدة باستخدام برنامج اكسيل ويمكن لمن أحب الرجوع لدورتنا السابقة "مهارات استخدام برنامج اكسيل 2013 " والتي نشرح فيها أساسيات ومبادئ برنامج الاكسيل. سوف تجدون رابطها في الرابط التالي: ملاحظة 2/ ملف التمارين الخاص بهذا الدرس موجود في الرابط التالي: http://www.4shared.com/file/NNsDhqPQce/1-_conditional_formatting_form.html ملاحظة 3/ لا تنسوا الاشتراك في قناتنا على اليوتيوب حتى يصلكم كل ما هو جديد أولا بأول ملاحظة 4/ لايك و شير x الخير حتى تعم الفائدة دمتم بخير أخوكم م/نضال الشامي Google+ Twitter
    1 point
  17. بارك الله فيك استاذ جعفر منكم تعلمنا ومازلنا نتعلم انتم استاذتنا ومعلمينا واقل شئ نشكركم فهذا حقكم علينا نحن الطلاب غفر الله لك ولوالديك وأسال الله ان يجعل كل ماتقدمونه صدقة جارية وفي ميزان حسناتكم تحياتي
    1 point
  18. موضوع رائع ومتميز .. ولكن أخي ياسر يبدو أنني أفضل الشرح بشكل يدوي .. قم بشرح الخطوات مكتوبة لتعم الفائدة .. تقبل تحياتي
    1 point
  19. أخي العزيز محمد شكرا لك على تشجيعك المستمر والامتناهي ، تحية إجلال وإحترام لشخصك الكريم جعفر
    1 point
  20. يلا ادي فكراية كدا علي الماشي لوحة مفاتيح سهلة جدا تعمدت اني اعملها سهلة ومعقدهاش بالاكواد عشان الموضوع يبقي موضوع السهل الممتنع ادي كود لوحة المفاتيح Range("K1") = Range("K1") & Selection شفت عبيط ازاي ABc.rar
    1 point
  21. اخى الفاضل خالد الرشيدى ... هذا هو المطلوب بالضبط ..شكرا لك .. وزاذك الله علما
    1 point
  22. كل الشكر والتقدير لاهتمامك
    1 point
  23. السلام عليكم كسر حماية هذا الملف صعبة جدا ان لم اقل مستحيلة ساحاول مجددا واخبرك بالنتيجة
    1 point
  24. شكرا استاذى سليم حاصيبا جعلك الله عونا لنا دائما
    1 point
  25. فكره البرنامج رائعة بارك الله في جهودك اخي خالد
    1 point
  26. السلام عليكم ورحمة الله وبركاته...جزاكم الله خيراً أخي وأستاذي الحبيب " الصقر" على التشجيع مروركم يشرفني ويشرف مشاركتي أنتم جميعاً ... إنما هو غيض من فيض بحوركم الزاخرة...حاولت الإطلالة على شواطئكم فاستقيت منها شذرات واقتبست من أنواركم...حتى أضيء ليلي الداجي. ...أما المنتظر فهو من البحور الزاخرة لا من السواقي الصغيرة.. وإن كنا لا نستهين بصغائر الأمور لأن الجبال الراسية من الحصى. والسلام عليكم.
    1 point
  27. استاذى الحبيب / ابويوسف اعتذر عن التاخير بالمشاركة ولكن والله لم ارى الموضوع الا الان جزاكم الله خيرا على هذه الابداع وهذه الشراره التى اطلقتها اسال الله تعالى ان يزيدك من علمه وفضله منتظرين الكثير والكثير من ابداعاتك وطلع الكنوز يا ابويوسف تقبل تحياتى
    1 point
  28. السلام عليكم ورحمة الله وبركاته أستاذى القدير / حسام عيسى لقد إستأذنت حضرتك فى مشاركة لى فى موضوع حضرتك الذى بعنوان سلسلة علمنى كيف اصطاد ( الفورم ) Forms بتجميع كافة الدروس حتى تاريخة وتحويها إلى PDF حتى يستفاد منها الجميع وها قد تم تجميعاعلى الرابط التالى http://www.mediafire.com/download/m64wkvz21ymd695/حسام+عيسى.rar نظرا لحجمهم وعدم القدرة على رفعهم بالمنتدى تقبلوا خالص تحياتى وتقديرى
    1 point
  29. اعتقد ان الموضوع مكرر وهنا واعتقد ان الحل للمشكلة تم باستخدام الدالة فورمات وتم تاكيده من قبل الخبير ابو عارف ! وهذا وجدناه في محاولات الاخ الشمال ! اما اجابة محددة لسبب المشكلة : هذه الدالة تعتمد على خوارزمية الحل بها عشوائيا عكس الاكسل رياضيا ! ولي مرجع في ذلك لعلي اتذكر كلمات البحث لايجاده ! وهو في احد صفحات موقع ميكروسوفت ! فهي تقرب لاقرب عدد زوجي ! وموضوع مبارك بعودة اخينا محمد ايمن سائلاً ومحاولاً للاجابة ! تحياتي
    1 point
  30. السّلام عليكم و رحمة الله و بركاته ألف شكر سيّدي الكريم على التّنسيقات و الابداعات المميّزة التي ليس لها حدود بإذن الله بارك الله فيك أستاذي القدير " مختار حسين محمود " على الابداع المكتمل جزاك الله خيرًا و زادك من علمه و فضله فائق إحتراماتي و إعجاباتي
    1 point
  31. بارك الله فيك أستاذي القدير " ياسر العربي " على التّنبيه و التّنويه .. و لو أنّي لا أعتقد إطلاقًا أنّ النّص المتحرك غير ظاهر .. أنا الذي نظر الأعمى إلى نصوصي .. و أسمعت حركة بروصاراتي منْ به صمَمُ هذا البيت هديّة للأخ .. أخونا فائق إعجاباتي و احتراماتي سيدي الكريم " ياسر العربي "
    1 point
  32. أخى وحبيبى الغالى / مختار أشكرك على مرورك الكريم ودعائك الطيب شرفتنى بمرورك تقبل خالص تحياتى وتقديرى لشخصكم الكريم
    1 point
  33. ** ترقية مستحقة ومباركة استاذ محمد **
    1 point
  34. ما أروعك أخى الحبيب الغالى / مختار يوميا تأتى بكل ما هو جديد وجديد زادك الله من علمه وفضلة وجعله فى ميزان حسناتك تقبل خالص تحياتى وتقديرى
    1 point
  35. اتفضل الملف المرفق ..عشان خاطر عيونك بس Alaa YasserKhalil.rar
    1 point
  36. تنسيقات بلا حدود وإبداع بلا حدود إبداع لا يتوقف وما زال هناك المزيد والمزيد .. ربنا يبارك ويزيد يا مختار يا أبو اليزيد .. على كل ما تقدمه من جديد وممتع ومفيد واضرب ع الحديد يا راجل يا شديد
    1 point
  37. 1 point
  38. السلام عليكم ورحمة الله وبركاته البغض منا قد يرغب فى ازالة التنسيق الشرطى عن خلية أو نطاق لسبب ما مع ازالة أو ابقاء آثاره من تنسيقات مثل لون الخلايا و لون و حجم الخط .... الخ و بإذن الله تعالى سأعرض عليكم ــ اخوتى ــ كودين يؤديان هذه المهمة الأول : يقوم بازالة التنسيق الشرطى مع ازالة آثاره من نطاق محدد : Sub RemovingCFandEffects() ' Removing Conditional Formats and the Effects Dim Rng As Range Set Rng = Sheets("Sheet1").Range("A1:C10") Application.ScreenUpdating = False Rng.FormatConditions.Delete Application.ScreenUpdating = True MsgBox ("The Conditional Formats in The Range " & Rng.Address & vbCrLf & " has been Removed and The Effects") End Sub الثانى : يقوم بازالة التنسيق الشرطى من نطاق محدد مع ابقاء آثاره من تنسيقات كما هى أو بعبارة أخرى تحويل التنسيقات الشرطية الى تنسيقات عادية : Sub RemovingCFbutNotEffects() ' Removing Conditional Formats but not the Effects Dim Rng As Range, C As Range Set Rng = Sheets("Sheet1").Range("A1:C10") Application.ScreenUpdating = False For Each C In Rng ' Rng.SpecialCells(xlCellTypeAllFormatConditions) With C .Interior.Color = .DisplayFormat.Interior.Color .Font.FontStyle = .DisplayFormat.Font.FontStyle .Font.Color = .DisplayFormat.Font.Color .FormatConditions.Delete End With Next Application.ScreenUpdating = True MsgBox ("The Conditional Formats in the Range " & Rng.Address & vbCrLf & "has been removed but Not the Effects ") End Sub أتمنى أن يكون موضوعا سهلا وخفيفا ونافعا لكم ... تقبل الله منا و منكم صالح الأعمال والسلام عليكم ورحمة الله وبركاته Removing Conditional Formats.rar
    1 point
  39. السلام عليكم اخى الحبيب / زيزو العجوز .. جزاك الله خيراً اخى الكريم يمكنك استخدام المعادلة التالية.. ضعها فى الخلية B5 ثم قم بالسحب..بدون اعمدة مساعدة ولكن بالنسبه للشرط الثانى.. اين تكتب كلمة مرتجع =SUMPRODUCT(RawData!$H$6:$H$1000*(RawData!$I$6:$I$1000=$A$2)*(RawData!$C$6:$C$1000=B$4)*(MONTH(RawData!$A$6:$A$1000)=MONTH($A5)))
    1 point
  40. المفاتيح الوظيفية المفتاح الوصف F1 عرض جزء المهام تعليمات Microsoft Office Excel . يستخدم CTRL+F1 لعرض الشريط أو إخفائه، وهو مكوّن في واجهة مستخدم Microsoft Office Fluent. ينشىء ALT+F1 مخطط للبيانات الموجودة في النطاق الحالي. يدرج ALT+SHIFT+F1 ورقة عمل جديدة. F2 تحرير الخلية النشطة ووضع نقطة الإدراج في نهاية محتويات الخلية. ونقل نقطة الإدراج إلى "شريط الصيغة" في حالة إيقاف تشغيل التحرير في إحدى الخلايا. يضيف SHIFT+F2 تعليق إلى خلية أو يحرره. يعرض CTRL+F2 إطار المعاينة قبل الطباعة. F3 عرض مربع الحوار اسم اللصق. يعرض SHIFT+F3 مربع الحوار إدراج دالة. F4 تكرار الأمر أو الإجراء الأخير إذا كان ممكناً. عند تحديد مرجع خلية أو نطاق في صيغة، يؤدي الضغط على F4 إلى التنقل عبر المجموعات المختلفة من المراجع المطلقة والنسبية. يغلق CTRL+F4 إطار المصنف المحدد. F5 عرض مربع الحوار الانتقال إلى. يستعيد CTRL+F5 حجم إطار المصنف المحدد. F6 يستخدم للتبديل بين ورقة العمل والشريط وجزء المهام وعناصر تحكم التكبير والتصغير. ففي ورقة العمل التي تم تقسيمها (القائمة عرض، الأمر إدارة هذا الإطار وتجميد الأجزاء وتقسيم الإطار)، يتضمن F6 الأجزاء المقسمة عند التبديل بين الأجزاء وناحية الشريط. يستخدم SHIFT+F6 للتبديل بين ورقة العمل وعناصر تحكم التكبير والتصغير وجزء المهام والشريط. يستخدم CTRL+F6 للتبديل إلى إطار المصنف التالي عند فتح أكثر من إطار مصنف. F7 عرض مربع الحوار تدقيق إملائي لإجراء تدقيق إملائي في ورقة العمل النشطة أو النطاق المحدد. ينفذ CTRL+F7 الأمر نقل ضمن إطار المصنف عندما يكون غير مكبر. يمكن استخدام مفاتيح الأسهم لنقل الإطار وعند الانتهاء، اضغط ENTER أو ESC لإلغاء الأمر. F8 تشغيل وضع التوسيع أو إيقاف تشغيله. في وضع التوسيع، يظهر تحديد موسع في سطر المعلومات وتوسع مفاتيح الأسهم التحديد. تمكنك SHIFT+F8 من إضافة خلية أو نطاق غير متجاور إلى تحديد من الخلايا باستخدام مفاتيح الأسهم. ينفذ CTRL+F8 الأمر حجم (الموجود في القائمة تحكم الخاصة بإطار المصنف) عندما يكون أي مصنف غير مكبر. تعرض ALT+F8 مربع الحوار ماكرو لإنشاء ماكرو أو تشغيله أو تحريره أو حذفه. F9 حساب كافة أوراق العمل الموجودة في كافة المصنفات المفتوحة. تحسب SHIFT+F9 ورقة العمل النشطة. تحسب CTRL+ALT+F9 كافة أوراق العمل الموجودة في كافة المصنفات المفتوحة، بغض النظر عما إذا كان تم تغييرها منذ آخر عملية حساب. يعيد CTRL+ALT+SHIFT+F9 فحص الصيغ المعتمدة ثم يحسب كافة الخلايا الموجودة في كافة المصنفات المفتوحة، بما في ذلك الخلايا التي لم يتم تحديدها لحاجتها للحساب. يستخدم CTRL+F9 لتصغير إطار المصنف إلى رمز. F10 تشغيل تلميحات المفاتيح أو إيقاف تشغيلها. يعرض SHIFT+F10 القائمة المختصرة للعنصر المحدد. يعرض ALT+SHIFT+F10 القائمة أو الرسالة للعلامة الذكية. إذا كان هناك أكثر من علامة ذكية، يستخدم للتبديل إلى العلامة الذكية التالية ويعرض القائمة أو الرسالة. يكبر CTRL+F10 إطار المصنف المحدد أو يقوم باستعادته. F11 إنشاء مخطط للبيانات الموجودة في النطاق الحالي. يدرج SHIFT+F11 ورقة عمل جديدة. يفتح ALT+F11 محرر Microsoft Visual Basic الذي يمكن إنشاء ماكرو به باستخدام Visual Basic for Applications (VBA) . F12 عرض مربع الحوار حفظ باسم.
    1 point
  41. موضوع جميل وفكرة اجمل تفضل بعض الاختصارات مفاتيح الاختصار التي تستخدم المفتاح CTRL المفتاح الوصف CTRL+PGUP للتبديل بين علامات تبويب ورقة العمل، من اليمين إلى اليسار. CTRL+PGDN للتبديل بين علامات تبويب ورقة العمل، من اليسار إلى اليمين. CTRL+SHIFT+( إظهار أية صفوف مخفية داخل التحديد. CTRL+SHIFT+) إظهار أية أعمدة مخفية داخل التحديد. CTRL+SHIFT+& تطبيق حدود خارجية للخلايا المحددة. CTRL+SHIFT_ إزالة الحدود الخارجية من الخلايا المحددة. CTRL+SHIFT+~ تطبيق تنسيق الأرقام "عام". CTRL+SHIFT+$ تطبيق التنسيق "عملة" بمنزلين عشريتين (تظهر الأرقام السالبة في أقواس). CTRL+SHIFT+% تطبيق التنسيق "نسبة مئوية" دون منازل عشرية. CTRL+SHIFT+^ تطبيق تنسيق رقم "أسي" بمنزلين عشريين. CTRL+SHIFT+# تطبيق التنسيق "تاريخ" باليوم والشهر والسنة. CTRL+SHIFT+@ تطبيق التنسيق "وقت" بالساعة والدقيقة و"ص" أو"م". CTRL+SHIFT+! تطبيق التنسيق "رقم" بمنزلين عشريين وفواصل آلاف وعلامة الناقص (-) للقيم السالبة. CTRL+SHIFT+* تحديد المنطقة الحالية الموجودة حول الخلية النشطة (تحاط منطقة البيانات بصفوف وأعمدة فارغة). في PivotTable، يحدد تقرير PivotTable بأكمله. CTRL+SHIFT+: إدخال الوقت الحالي. CTRL+SHIFT+" نسخ القيمة من الخلية الموجودة أعلى الخلية النشطة إلى الخلية أو إلى "شريط الصيغة". CTRL+SHIFT+Plus (+) عرض مربع الحوار إدراج لإدراج خلايا فارغة. CTRL+Minus (-) عرض مربع الحوار حذف لحذف الخلايا المحددة. CTRL+; إدخال التاريخ الحالي. CTRL+` التبديل بين عرض قيم الخلايا وعرض الصيغ في ورقة العمل. CTRL+' نسخ صيغة من الخلية الموجودة أعلى الخلية النشطة إلى الخلية أو إلى "شريط الصيغة". CTRL+1 عرض مربع الحوار تنسيق خلايا. CTRL+2 تطبيق تنسيق غامق أو إزالته. CTRL+3 تطبيق تنسيق مائل أو إزالته. CTRL+4 تطبيق تسطير أو إزالته. CTRL+5 تطبيق تنسيق يتوسطه خط أو إزالته. CTRL+6 التبديل بين إخفاء الكائنات وعرض الكائنات وعرض العناصر النائبة للكائنات. CTRL+8 عرض رموز التخطيط التفصيلي أو إخفاؤها. CTRL+9 إخفاء الصفوف المحددة. CTRL+0 إخفاء الأعمدة المحددة. CTRL+A تحديد ورقة العمل بأكملها. إذا احتوت ورقة العمل على بيانات، تحدد CTRL+A المنطقة الحالية. ويؤدي ضغط CTRL+A للمرة الثانية إلى تحديد المنطقة الحالية وصفوف التلخيص. أما ضغط CTRL+A للمرة الثالثة يؤدي إلى تحديد ورقة العمل بأكملها. يتم عرض مربع الحوار وسيطات الدالة، عندما تكون نقطة الإدراج إلى يمين اسم الدالة في صيغة. يؤدي ضغط CTRL+SHIFT+A إلى إدراج أسماء الوسيطات والأقواس، عندما تكون نقطة الأدراج إلى يمين اسم الدالة في صيغة. CTRL+B تطبيق تنسيق غامق أو إزالته. CTRL+C نسخ الخلايا المحددة. يؤدي الضغط على CTRL+C متبوعاً بـ CTRL+C إلى إظهار الحافظة. CTRL+D استخدام الأمر تعبئة لأسفل لنسخ محتويات وتنسيق أعلى خلية في نطاق محدد إلى الخلايا الموجودة بأسفل. CTRL+F عرض مربع الحوار بحث واستبدال، مع تحديد علامة التبويب بحث. تعرض SHIFT+F5 أيضاً علامة التبويب هذه، بينما تكرر SHIFT+F4 إجراء بحث الأخير. يفتح CTRL+SHIFT+F مربع الحوار تنسيق الخلايا مع تحديد علامة التبويب خط. CTRL+G عرض مربع الحوار الانتقال إلى. تعرض F5 أيضاً مربع الحوار هذا. CTRL+H عرض مربع الحوار بحث واستبدال مع تحديد علامة التبويب استبدال. CTRL+I تطبيق تنسيق مائل أو إزالته. CTRL+K عرض مربع الحوار إدراج ارتباط تشعبي للارتباطات التشعبية الجديدة أو مربع حوار تحرير ارتباط تشعبيللارتباطات التشعبية المحددة الموجودة. CTRL+N إنشاء مصنف فارغ جديد. CTRL+O عرض مربع الحوار فتح لفتح ملف أو العثور عليه. يحدد CTRL+SHIFT+O كافة الخلايا التي تحتوي على تعليق. CTRL+P عرض مربع الحوار طباعة. يفتح CTRL+SHIFT+P مربع الحوار تنسيق الخلايا مع تحديد علامة التبويب خط. CTRL+R استخدام الأمر تعبئة لليمين لنسخ محتويات وتنسيق الخلية الموجودة أقصى اليسار في النطاق المحدد في الخلايا ناحية اليمين. CTRL+S حفظ الملف النشط باسم الملف الحالي وموقعه وتنسيقه. CTRL+T عرض مربع الحوار إنشاء جدول. CTRL+U تطبيق تسطير أو إزالته. يستخدم CTRL+SHIFT+U للتبديل بين توسيع شريط الصيغة أو طيه. CTRL+V إدراج محتويات "الحافظة" في نقطة الإدراج واستبدال أي تحديد. يتوفر فقط بعد قص كائن أو نص أو محتويات خلايا أو نسخها. تقوم CTRL+ALT+V بعرض مربع الحوار لصق خاص. ويكون متاحًا بعد قص أو نسخ كائن أو نص أو محتويات خلية على ورقة العمل أو في برنامج آخر. CTRL+W إغلاق إطار المصنف المحدد. CTRL+X قص الخلايا المحددة. CTRL+Y تكرار الأمر أو الإجراء الأخير إذا كان ممكناً. CTRL+Z استخدام الأمر تراجع لعكس الأمر الأخير أو لحذف الإدخال الأخير الذي كتبته. يستخدم CTRL+SHIFT+Z الأمر تراجع أو إعادة لعكس التصحيح التلقائي الأخير أو استعادته عند عرض "العلامات الذكية للتصحيح التلقائي".
    1 point
  42. والآن الى الكنز المخزون في صفحة كود الاكسس ، والذي يحتوي على جميع اوامر الاكسس ، و VBA ، و..... افتح صفحة الكود: . إما تضغط على الايقونه الموضحة بالدائرة الحمراء في الصورة اعلاه ، او تضغط على الزر F2 في لوحة المقاتيح ، وستظهر لك هذه الشاشة: . في الشاشة التاليه: 1. اختر اي الاوامر تريد ، VBA او اكسس او ... ، فسترى انواع الاوامر المتوفرة لها في النافذة 2 ، انا اخترت VBA ، 2. ثم اختار نوع الامر الذي تريده ، انا مثلا اردت جميع اوامر التاريخ والوقت ، فسترى جميع اوامر التاريخ والوقت في النافذة 3 ، 3. اختار الامر الذي تريده وانقر عليه ، انا مثلا اخترت الامر DateAdd ، فسترى في الاسفل (4) طريقة كتابة الامر : . وتستطيع كتابة اي امر تريد في خانة البحث (Recordset مثلا) ، وستحصل على جميع الاوامر التابعة له وإخواننا الصعايدة على راسنا جعفر
    1 point
  43. الى هنا والحديث كله عن API ، ولكن استخدام الوحدات النمطية بشكل يومي يتعدى هذه المعلومة ، فمعظم برامجنا تحتاج الى حساب او معادلات او ... ، فهنا يأتي الوحدة النمطية ، وبالذات عند مناداتها من الاستعلام (او النموذج او التقرير)، ففي الاستعلام قد تكون محتاج الى اجراء عملية حسابية لحقل معين ، وقد تكون خطوات هذه العملية كثيرة ، ولا يمكنك عملها في سطر واحد في الاستعلام ، مثلا: الحقل items في الجدول tbl_AHF يحتوي على 3 معلومات مكررة وهي A, H, F نريد ان نقسم الحقل qty على عدد معين (يعتمد على قيمة الحقل items) ، نقسم qty على 7 ، اذا كانت قيمة items تساوي A ، نقسم qty على 6 ، اذا كانت قيمة items تساوي H ، نقسم qty على 5 ، اذا كانت قيمة items تساوي F ، هنا من الصعوبة ان نضع كود العملية كلها في الاستعلام في سطر واحد ، واذا وضعناه ، فلن نستطيع تعديله بسهولة لاحقا ، لأنه سيكون معقدا ، فالطريقة المثلى هنا ، هي عمل وحدة نمطية ، وارسال قيم الحقول items , qty اليها ، وعمل الكود بها ، واسترجاع النتائج منها ، الوحدة النمطية ستكون هكذا: Function Get_Values(i, q) 'i = items 'q = qty If i = "A" Then Get_Values = q / 7 ElseIf i = "H" Then Get_Values = q / 6 ElseIf i = "F" Then Get_Values = q / 5 End If End Function . والاستعلام يكون بهذه الطريقة: . والنتيجة: . وهنا نلاحظ من النتيجة ان تنسيقها للجهة اليسار ، مما يعني ان النتيجة نص وليست رقم ، لذا نرجع للوحدة النمطية (ودون المساس بالاستعلام) ونجري عليها التعديل المطلوب ، وبكل سهولة ، لتغيير النتيجة من نص الى رقم ، وتصبح الوحدة النمطية: Function Get_Values(i, q) As Double 'i = items 'q = qty If i = "A" Then Get_Values = q / 7 ElseIf i = "H" Then Get_Values = q / 6 ElseIf i = "F" Then Get_Values = q / 5 End If End Function . والنتيجة جعفر 258.modulesANDcommands.mdb.zip
    1 point
  44. شكرا أخي الاستاذ رمهان على هذا الشرح والان الى الجانب العملي لا تستطيع ان تنادي هذه الوحدات بالطرق التقليدية ، وكل لغة (مثل VB, VBA, C++, ...) لها طريقتها الخاصة في مناداة هذه الوحدات ، وبالنسبة الى اكسس ، فالرابط التالي يعطينا امثلة في كيفية استخدامها: http://access.mvps.org/access/index.html وملك الوحدات النمطية وبالذات للرسومات في الاكسس: http://lebans.com/ جعفر
    1 point
  45. اهلا بك ابو عبدالله عايزك تفهم ان موضوعك موضوع مفتوح نوعا ما ! او للاجابة يحتاج وقت وشرح ولابد من التطرق للاساسيات علشان نكمل ! وبرضه يا اشرح شي بشكل علمي لانه سيكون مرجع لكل من يمر هنا ! لذلك مثل هذه الاشياء خذها من مصادرها الصحيحة والموثوقة افضل مثل : كتب - موقع ميكروسوفت ! انصحك ان تاخذ كتاب في الاساسيات وبتسلسل المواضيع بدون القفز من فصل لاخر ! الشي الذي ممكن اضيفه هنا هو : عايزك تتخيل ان هذا البريمج (الاكسس) به قاعدة بيانات مصغرة - اداة تصميم وتطوير - بيئة لكتابة اكواد ! كلها هذا ونحن نعرف ان كل منها موجود كمنتج مستقل من شركات اخرى ! بينما هذه كلها موجودة في ملف واحد ! وملف ايه ؟ ملف بيانات ! بل كل وحدة عبارة عن كائن داخل هذا الملف ! بمعنى انتي الوحدة النمطية اللي نكتب فيك الاكواد ماخذه شكل مصغر من عمل ادوات التطوير المستقلة مثل الترجمة وتتبع الاخطاء وغيرها وتحويل الكود الى لغة الكمبيوتر ! وهية مع هذا كله مازالت كائن في ملف الاكسس ! فمش عارف هل ننظر للموضوع استخفاف بعقولنا ام انه ابداع في هذا المنتج ؟!!!!! وهنا انا حجيبك على استفساراتك ولكن اتمنى ان لاتكون حلقة مفتوحة باستفسار عن جواب لاستفسار سابق وهكذا ! وصدقني ابداية مع كتاب وبتسلسل منطقي افضل بكثير من المواضيع التي تكتب بالانترنت وذلك لاسباب عدة منها انت لاتعرف مستوى كاتب الموضوع او صحة مايكتب عكس الموجود بالكتب والمعتمدة ! ** كلمة private تحدد مدى حياة المتغيرscope ! فبها يكون حي فقط في المكان الذي ولد به اي عرف به ! فمثلا ولد في وحدة نمطية عامة فانه يعرف وحي في تلك الوحدة فقط ! ولدة في وحدة فئة نموذج فانه حي ويعرف هنا فقط ! بمعنى لو ناديته منكا اخر ستجده ميت ولا يستجيب ! عكس public ** byval و byref تستخدم لتحديد نوع او اسلوب تمرير المتغيرات للاجراءت والدوال ! بالعربي : بالقيمة او المرجع ! فاذا مررت قيمة متغير من نوع قيمة فانه للرغبة او عدم الاستطاعة في تغيير قيمة المتغير الاساسية عكس بالمرجع التي يمكن تغيير قيمة المتغير من خلال الاجراء او الدالة ! كما ان الموضوع يطول حول مسالة تعريف المتغيرات نفسها بانها من نوع قيمة ام مرجع ! فهل ممكن امرر قيمة متغير معرف انه مرجع لدالة تستقبل بالقيمة ؟ !! ** رابط لل api : https://msdn.microsoft.com/en-us/library/windows/desktop/ff818516(v=vs.85).aspx http://allapi.mentalis.org/apilist/apilist.php طبعا تاكد من توافق الدالة مع اصدار الويندوز! هذا متمنيا ان حصل لو جزء من ما تريد ! كما انبه على ان الشرح لا بد ان ياتي من استاذ فهو علم بحد ذاته فليس المقصود بالاستاذ بقدر مايملك من معلومة ولكن بقدر رضا تلاميذه في ايصال المعلومة ! تحياتي
    1 point
  46. اليك الحل بس ملحوظه لازم تظل اخلايا الفاضيه دى لانها مسمعه اى تغيير بالصفحه الثانيه غيرتلك مكانها وممكن كمان تخفيها لو عاوز كارته مخزن.rar
    1 point
  47. بسم الله الرحمن الرحيم منذ ان حملت المرفق و انا افكر في طريقة لشرح الفرق بينهما و ساحاول ان اشرح عسى ان يستفاد منها اولا : الكود يتم وضع الكود في زر امر او عند تحميل نموذج او اغلاقه و يكون الكود خاصا بمعنى ينفذ عند حدث الضغط على زر الامر ( oopen ) مثلا private sub oopen_click docmd.openform"11" end sub نلاحظ في بداية الكود كلمة ( private ) اي خاص و الكود هنا ينفذ فقط عند الضغط على زر ( oopen ) ثانيا : الوحدات النمطية تحتوي الوحدات النمطية على اكواد او وظائف و على عكس ( الكود ) يمكن استدعاء الوحدة النمطية في اي نموذج وهي لا تتحس بالأحداث مثلا Public Sub openform() DoCmd.openform "ff" End Sub نلاحظ وجود كلمة ( public ) اي عمومي يقوم هذا الكود بفتح النموذج ( ff ) و يتم استدعائه بهذا الشكل Private Sub Command0_Click() Call openform End Sub حيث نضع هذا الكود في اي زر موجود ضمن اي نموذج فائدة : لا يجوز تسمية الوحدة النمطية بنفس اسم احد الكودات الموجود داخلها ( مثلا لا يجوز تسمية الوحدة النمطية السابقة باسم openform بل يجب اعطائها اي اسم آخر ) فائدة : لا يمكن ان تكتب في الوحدة النمطية ( oopen_click ) لان الوحدة النمطية لا تتحسس بالأحداث ثالثا : الوحدة النمطية للفئة الوحدة النمطية للفئة تجمع بين الوحدة النمطية و الكود بمعنى آخر الكود التالي ينفذ عند فتح النموذج private sub form_open Set Anim = New clsFormAnimate end sub و عملية فتح النموذج فعليا هي حدث ولكن لا يمكن ان نكتب الكود السابق ضمن وحدة نمطية حتى لو استعملنا كلمة ( public ) لان الوحدة النمطية لا تتحس بالأحداث ( كما ذكرنا سابقا ) انما تخزن كودا عاما يتم تعريفه باسمه و ضمن اسمه نكتب ما نريد ان ينفذ لكن الوحدة النمطية للفئة يمكن ان تتحس بالأحداث و تتعامل معها مثلا يمكن ان تكتب ضمن الوحدة النمطية للفئة Private Sub mForm_Load() MsgBox "hi", vbInformation End Sub الكود السابق يعطي رسالة ( hi ) عند تحميل نموذج و لكن اي نموذج !!!! الجواب هو اي نموذج نرغب به فقط علينا استدعاء الوحدة النمطية للفئة لتنفيذ هذا الكود فائدة : الوحدة النمطية للفئة تستدعى باسمها على عكس الوحدات النمطية كيف يتم استدعاء الوحدة النمطية للفئة ؟؟ 1 - ننشئ وحدة نمطية للفئة و نسميها ( open1 ) نكتب الكود التالي في قسم التصريحات العامة للوحدة النمطية للفئة Public withevents mform As Access.Form حيث يتم تعريف المتغير ( mform ) كنموذج 2 - نكتب هذا الكود في الوحدة النمطية للفئة Private Sub Class_Initialize() mForm_Load Beep End Sub عند تحميل الوحدة النمطية اذهب الى ( mform_load ) 3 - نضيف هذا الكود الى الوحدة النمطية للفئة Private Sub mForm_Load() MsgBox "hi", vbInformation End Sub عند تحميل ( mform ) اظهر رسالة ( hi ) و طبعا ( mform ) تم تعريفه سابقا كنموذج اكسس 4 - نكتب هذا الكود في قسم التصريحات العامة للنموذج الذي نرغب ان يتم استدعاء الوحدة النمطية للفئة فيه و ليكن مثلا ( 123 ) Dim Anim As open1 تم تعريف متغير ( anim ) كوحدة نمطية للفئة 5 - نكتب هذا الكود في حدث تحميل النموذج ( 123 ) Set Anim = New open1 تم ضبط المتغير ليستدعي الوحدة النمطية للفئة فائدة : لايمكن كتابة الكود التالي لاستدعاء الوحدة النمطية للفئة Private Sub Form_Load() Call open1 End Sub الكود المكتوب ضمن الوحدة النمطية للفئة السابقة يقوم باصدار صوت تنبيه و يظهر رسالة مكتوب فيها ( hi ) الكثير يسأل هل يجب ان اكتب كل هذه الجريدة من اجل صوت تنبيه و رسالة ترحيب الجواب هو لا ولكن يتم انشاء الوحدات النمطية للفئة من اجل عدد نماذج اكبر و عمليات كودات اكبر و في النهاية ربما يستطيع المرفق ان يشرح افضل مني وارجو ممن يستطيع ان يشرح افضل مني ان يسهم في شرح الموضوع و اعتذر على الإطالة مثال عن انشاء الوحدات النمطية و الوحدات النمطية للفئة.rar
    1 point
×
×
  • اضف...

Important Information