اذهب الي المحتوي
أوفيسنا

أ / محمد صالح

أوفيسنا
  • Posts

    4,358
  • تاريخ الانضمام

  • Days Won

    185

كل منشورات العضو أ / محمد صالح

  1. بارك الله لك أخي الكريم محمد يحياوي رابع زر في الرسالة هو زر التعليمات (help) إذا تم تضمينه مع رسالة بها 3 أزرار
  2. موعدنا اليوم مع تطبيق ضمن سلسلة ما خف وزنه وغلا ثمنه لأحبابي أعضاء وزوار منتدى أوفيسنا تطبيق يساعدك في إنشاء رسائل msgbox بصورة احترافية فقط اختر الأزرار والعنوان ونص الرسالة والأيقونة وباقي الخيارات ثم اضغط على زر تجربة لمشاهدة كود الرسالة ثم قم بنسخ الكود لبرنامجك ويمكنك استخدام الثوابت والقيم في كتابة الكود وفي الأخير لا ينقصني سوى دعاؤكم msgboxbuilder.rar
  3. ما شاء الله رائع أخي خبور خير وهذا رابط للإخوة هواة ألعاب الإكسل http://excelgames.org
  4. أشكركم جميعاً إخوتي وأحبتي في الله وهذا الجزء العملي 2 من الفصل الرابع في الدورة وفقنا الله وإياكم لكل ما يحب ويرضى
  5. هذا ما قلته أنا فلربما يحتاج ذلك أحد الإخوة ولعمل ما تريد استبدل هذا السطر With ActiveSheet.Range("a2").Validation بالتالي With sheets("mas").Range("a2").Validation حيث mas هو اسم الشيت الذي تريد وضع القائمة فيه
  6. بارك الله لك أخي العيدروس (أبا نصار) وهذه مساهمة من العبد لله لحل مثل هذا المشكل ضع هذا الكود في الجزء الخاص بالمصنف thisworkbook Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim ws As Worksheet, sheetlist As String For Each ws In ActiveWorkbook.Sheets sheetlist = sheetlist & ws.Name & "," Next With ActiveSheet.Range("a2").Validation .Delete .Add xlValidateList, Formula1:=Left(sheetlist, Len(sheetlist) - 1) End With End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Range("a2").Value <> "" Then Sheets(Range("a2").Value).Select End Sub وهو لوضع قائمة بأسماء الشيتات في الخلية a2 من كل الشيتات وبفضل الله القائمة ذاتية التحديث بحيث إذا تمت إضافة شيت أو حذف شيت يظهر أو يختفي من القائمة في الحال وعند الاختيار من القائمة يتم الانتقال للشيت الذي تم اختياره جرب أخي وأخبرني بالنتيجة
  7. بسم الله الرحمن الرحيم الجزء العملي من الفصل الرابع (الكائنات objects ) ويبقى جزء بسيط قريباً إن شاء الله ولا ينقصني سوى دعاؤكم
  8. إخواني الكرام أبا نصار وأبا أحمد شكرا لمروركم الكريم أتمنى أن أكون قد ساهمت في توضيح هذا الأمر لكل طالب له وفقنا الله وإياكم لكل ما يحب ويرضى
  9. أخي الفاضل خبور خير وفق الله إخواننا أهل اليمن إلى كل ما فيه الخير لليمن وللأمة الإسلامية
  10. أخي أبو الحسن أدام الله حسنك ووفقك لكل ما يحب ويرضى
  11. أشكرك أخي سعد وقد أجابك من هو أفضل مني (الملائكة) : آمين ولك مثلها اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا
  12. بسم الله الرحمن الرحيم بناء على طلب أخينا الكريم عبد الله المجرب (أبو أحمد) يتم هنا مناقشة دالة الرسائل التي تظهر لمدة محددة بالثواني ثم تختفي تلقائياً الصيغة العامة لها intButton = object.Popup(strText,[nSecondsToWait],[strTitle],[nType]) شرح البارامترات object : كائن wscript الذي تم إنشاؤه strText : نص الرسالة (مطلوب) nSecondsToWait : عدد ثواني بقاء الرسالة على الشاشة (اختياري) القيمة الافتراضية 0 وتعني عدم اختفاء الرسالة إلا بعد الضغط على زر فيها strTitle : عنوان الرسالة (اختياري) إذا لم يتم كتايته يظهر "Windows Script Host" nType : رقم يحدد الأزرار والأيقونات المستعملة في الرسالة (اختياري) وترجع الدالة رقم intButton الخاص برقم الأزرار التي ضغطها المستخدم حتى يخفي الرسالة ويهمنا في هذا المقام الأزرار والأيقونات وهي كالتالي وهي مثل دالة msgbox العادية في أنه يمكنك جمع قيمتين أو أكثر سواء بعلامة + أو بكتابة حاصل الجمع الفعلي فمثلا لعمل رسالة بها زر نعم أولا وأيقونة علامة الاستفهام نكتب 4+32 أو 36 نأتي الآن للقيمة التي ترجعها الدالة نأخذ مثالاً set WshShell = CreateObject("WScript.Shell") Result = WshShell.Popup("This is a popup box!", 10, "Title", 65) ويمكن تنفيذ الأمر بدون وضع القيمة الراجعة في متغير set WshShell = CreateObject("WScript.Shell") WshShell.Popup "This is a popup box!", 10, "Title", 65 ويمكنك استعمال هذه الدالة من تصميمي للتعامل مع popup Function msg(strText As String,nSecondsToWait as integer, strTitle As String, nType As Integer) CreateObject("WScript.Shell").Popup strText,nSecondsToWait,strTitle,nType End Function طريقة استعمالها Sub mas() msg "text", 2, "title", 4+256 End Sub .... وفي الأخير لا ينقصني سوى دعاؤكم وفقنا الله وإياكم لكل ما يحب ويرضى
  13. حد يجر ب يا جماعة لأن عندي مفيش حاجة بتنكتب بعد الضغط على p ويتم حذف محتويات مربع النص للكتابة من جديد والسلام عليكم ورحمة الله وبركاته
  14. تمام أخي بن علية لم أنتبه لأني في الإكسل كثيراُ ما نستخدم null في الأكسس ولأن المتغير من نوع integer فإذا كان فارغاً تكون قيمته صفر فتصبح الدالة Function MonthDays(myMonth As Integer, Optional myYear As Integer) As Integer MonthDays = Day(DateSerial(IIf(myYear =0, Year(Date), myYear), myMonth + 1, 0)) End Function والسلام عليكم ورحمة الله وبركاته
  15. إخواني الكرام بارك الله لكم وبعد إذن أخي الفاضل بن علية هذا كود بسيط إن كان الأمر هو فقط تحويل المعادلة لكود يؤدي نفس الغرض .... وقد أضفت إمكانية تحديد العام ليحضر عدد ايام هذا الشهر لهذا العام تحديداً وإذا لم يتم تحديد العام فيعتبره الكود هو العام الحالي الدالة: Function MonthDays(myMonth As Integer, Optional myYear As Integer) As Integer MonthDays = Day(DateSerial(IIf(myYear = Null, Year(Date), myYear), myMonth + 1, 0)) End Function
  16. أخي الكريم من الذي وضع حقل رقم العامل واسم العامل قبل حقل عدد الساعات؟؟!! إنه أنت .... وهذا يعني الاهتمام بحقل رقم العامل أولا ثم يليه في الأهمية اسم العامل ثم يليه في الأهمية عدد الساعات وإذا كنت تريد كما تقول حالياً : كتابة عدد الساعات ثم كتابة رقم العامل .... فكان من الطبيعي أن ترتب الحقول كما تريد. على العموم هذ تعديل بسيط ممكن يؤدي الغرض Mas_Roll2.rar
  17. بسم الله الرحمن الرحيم تكملة لمشوار الأساتذة وتجميعاً للجهود قمت بهذا العمل التجميعي وبعد إذن أخونا خبور خير تم تعديل الكود الخاص به كدالة mas_Max_Req1.rar
  18. تفضل أخي الكريم جرب هذا المرفق وبالنسبة لموضوع تنسيق التاريخ لا يشغلك لأن الأيام مكتوبة في الإكسل والقائمة تضع قيمتها كأرقام المهم أن هذا هو اليوم المطلوب وتم عرض قيمة الكومبوبوكس بتنسيق التاريخ في تسمية مجاورة Mas_Roll1.rar
  19. بارك الله لك أخي عبد الله ولكن هل جربت هذه المعادلة؟؟!! جرب أن تغيب أحد الموظفين في أيام أخرى غير الأحد بحيث يكون الأحد هو الأكثر غياباً عندي أحضرت نتائج غير صحيحة
  20. عذرا أخي الكريم لعدم فهمي المطلوب الخاص بعدد مرات غياب اليوم نفسه ولعمل هذا ضع هذه المعادلة في الخلية h7 =IF(MAX(AI7:AO7)>0;INDEX(AI7:AO7;MATCH(AG7;$AI$6:$AO$6;0));0) وبالنسبة لعمل كل هذا بمعادلة واحدة فلست متفرغاً لدرجة البحث فيها مع إمكانية حدوثها إن شاء الله
  21. تفضل أخي الكريم تم التحايل على الموضوع بحيلة بسيطة وهي عمل جدول يخص عدد مرات الغياب لكل يوم من أيام الأسبوع ثم إحضار اسم اليوم الذي يحتوي على أكبر عدد وربما يكون لدى الإخوة حلول أخرى mas_Max_Req.rar
  22. الحمد لله هكذا نستعمل هذا الكود في ربط البرنامج بجهاز المستخدم من خلال رقم الهارد ورقم المعالج ورقم اللوحة الأم معاً ونحن متأكدون من عمله على كل أنظمة تشغيل ويندوز للعلم رقم الهارد ديسك الذي يحضره الكود لا يتغير بعد الفورمات كما هو الحال في هذا الكود CreateObject("Scripting.FileSystemObject").GetDrive("c:\").serialnumber ولكن عذراً لم أتبين من الإخوة هل الكود يعمل في ويندوز 64 بت بدون تغيير الكود إلى Win64_ أم احتاج الأمر لتغييرها؟؟!!
  23. بسم الله الرحمن الرحيم أود أولا أن أشكر كل من يتعاون ويساهم في هذه الدورة التي تدل على أن التعاون أساس التقدم وأواصل مع أحبتي الفصل الرابع في دورة فيجوال بيسك التطبيقات vba نموذج كائن الإكسل excel object model مقدمة نظرية البرمجة التقليدية كانت لا تعتمد على أسلوب الكائنات فكان المبرمج يكرر الكثير من الأكواد لتحديد الكائن الذي يعمل عليه ولكن تغير الأمر بظهور البرمجة كائنية التوجه object oriented programming أو اختصاراً oop ولنتعرف أولا على معنى الكائن: الكائن هو وحدة كاملة لها خصائصها وطرقها (أفعالها) فعلى سبيل المثال: الإنسان كائن له خصائصه ومنها اسمه وجنسه وطوله ولون شعره وهكذا وله أيضا أفعاله الخاصة به فالإنسان: يمشي يتحدث يسكت يقف يجلس وهكذا. وكل تطبيق في الأوفيس له نموذج كائن خاص به يمكنك استخدامه من الفيجوال بيسك للتطبيقات vba والتحكم فيه بدءً من التطبيق ككل حتى أي خلية في أي ورقة عمل. ويندرج تحت الكائن الرئيسي كائنات كثيرة فرعية (كخصائص للكائن الأكبر) وكل كائن له خصائصه وله طرقه (أفعاله) ويوجد في الإكسل أكثر من 200 كائن ولهم أكثر من 5000 خاصية وطريقة وبالتالي يصعب تذكرهم جميعاً وهنا يظهر دور مستعرض الكائنات object browser بالضغط على F2 من لوحة المفاتيح ، ويوجد أيضاً ما يسمى بمجموعات الكائنات collections وهي مجموعة من الكائنات التي لها نفس عدد الخصائص والطرق فمثلا: محمد و احمد ومحمود يمكن جمعهم في مجموعة الذكور مثل workbooks للتعامل مع مجموعة المصنفات المفتوحة و worksheets للتعامل مع أوراق عمل المصنف النشط أو أي مصنف يتم تحديده ، ولكن من أهم هذه الكائنات وأكثرها استخداماً: application التطبيق و workbook المصنف و worksheet ورقة العمل و chart التخطيط (الرسم البياني) و range المدى و dialog صندوق حواري. وسوف نتحدث عن كل كائن من هذه الكائنات بصورة مختصرة: * التطبيق application هو أول كائن وكل الكائنات الأخرى أبناء له ويمكن الاستغناء عنه في حالة وجود الخاصية المستعمله أو الطريقة ضمن الكائن عام <globals> في مستعرض الكائنات بمعنى أنه يمكنك استعمال أي من السطرين التاليين للتعامل مع الخلية النشطة. application.activecell أو activecell وبالنسبة للخصائص أو الطرق التي لا توجد ضمن العام <globals> يجب كتابة مسارها كاملاً بهذه الصورة فمثلا: (لإيقاف تحديث الشاشة) Application.ScreenUpdating = False ولن تحصل على النتائج المطلوبة إذا استعملت ScreenUpdating = False ويمكنك البدء في مدارسة خصائص وطرق أي كائن مثل application عملياً بكتابة اسم الكائن في بداية السطر ثم نقطة ستظهر قائمة بكل الخصائص والطرق المتاحة لهذا الكائن. (فقط يلزمك ترجمتها ومعرفة طريقة استخدامها وهذا ما ستتحدث عنه الفصول القادمة إن شاء الله في الدورة) * المصنف workbook للتعامل مع المصنف المفتوح ويمكنك استخدام مجموعة المصنفات workbooks المزيد من المعلومات في الفصل التاسع. * ورقة العمل worksheet للتعامل مع ورقة العمل المحددة ويمكنك استعمال مجموعة worksheets المزيد من المعلومات في الفصل العاشر. * المدى range للتعامل مع أي مدى حتى وإن كان خلية واحدة مثال: (للتعامل مع الخلية a1 ) range(“a1”) المزيد من المعلومات في الفصل 11 * مربع الحوار dialog للتعامل مع مربعات الحوار الموجودة ضمن الإكسل ويمكن استعمال مجموعة dialogs فمثلا لعرض الصندوق الحواري الخاص بحفظ باسم save as نستخدم Application.Dialogs(xlDialogSaveAs).Show المزيد من المعلومات في الفصل 12 * التخطيط chart للتعامل مع الرسم البياني وتحديد خصائصه وأفعاله ممن خلال الكود المزيد في الفصل 13 === للتعامل مع الخصائص نستعمل الصورة العامة التالية: القيمة = الخاصية.الكائن مثال: لتغيير قيمة الخلية a1 إلى رقم 45 range(“a1”).value=45 === للتعامل مع الطرق (الأفعال) نستعمل الصورة العامة التالية: باقي الخيارات الطريقة.الكائن مثال: لنسخ ورقة العمل الأولى بعد الثالثة Worksheets(1).Copy After:=Worksheets(3) === للتعامل مع المجموعات يتم استعمال رقم (مسلسل - ترتيب) الكائن في المجموعة مثال: للتعامل مع ورقة العمل الثانية worksheets(2) ****************************** وبإذن الله في الجانب العملي من هذا الفصل سوف نتناول ما يلي: استخدام مستعرض الكائنات إنشاء كائن تغيير خصائص كائن مقارنة الكائنات استخدام طرق(أفعال ووظائف) كائن عرض صناديق الحوار الموجودة ضمن الإكسل ========= والسلام عليكم ورحمة الله وبركاته
  24. سعيد جدا بتواصلك أهي الكريم أبوخليل إذا كانت النتيجة لديك صفر بالمائة ولم يظهر شيء فنريد نحن العرب تعديل الكود ليعرض ما يناسب نسخ 64bit هل تشترك معي فيها؟ حاول أن تعدل في الكود الخاص بالدالة وتستبدل Win32_ بما يناسبك Win64_ وجرّب هل ستنفع أو لا؟؟
×
×
  • اضف...

Important Information