الشهابي قام بنشر ديسمبر 11, 2011 قام بنشر ديسمبر 11, 2011 (معدل) فعلا أخي يحياوي فملف المعلومات قبل السحب ولكن وضع في مووديل مستقل وليس في المعلومات البرمجية لليوزر فورم فقط كانت محاولة لأنه عندي مجموعة يوزرفورم vb6 وحاولت سحبها فقلت ربما هناك طرقة أخرى . الفكرة وصلت إن شاء الله جزاك الله خير تم تعديل ديسمبر 11, 2011 بواسطه الشهابي
أ / محمد صالح قام بنشر ديسمبر 11, 2011 قام بنشر ديسمبر 11, 2011 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته استكمالاً لما بدأه الإخوة الأعزاء أواصل معكم أحبابي أعضاء منتدى أوفيسنا سلسلة شرح فيجوال بيسك التطبيقات vba عرفنا في الفصل الأول تسجيل الماكرو ومستويات الأمان والتعامل مع ما تم تسجيله من الماكروات سواء بالحذف أو تعيين اختصار أو ربطه بزر ........ والكثير. وفي الفصل الثاني تعرفنا على محرر فيجوال بيسك وواجهته الرئيسية ومكونات نافذته واستخدامات كل جزء فيها وخصائص معظم عناصر التحكم التي يمكن استعمالها في نماذج vba. والآن جاء دورنا مع التعرف على أساسيات لغة vba كلغة برمجة: ما الفرق بين vb (فيجوال بيسك) و vba (فيجوال بيسك التطبيقات) ؟ لا أجد فرقا كبيراً فالقواعد المتبعة هنا هي نفسها هناك ولكن الفرق الوحيد الجوهري هو أن vb قائمة بذاتها أما vba فيتم احتوائها داخل أي تطبيق مثل الإكسل أو الوورد أو أي تطبيق آخر كما أن vb قادرة على إنتاج ملفات تنفيذية exe تكون واجهة للبرنامج بعد ذلك أما vba فتستعمل التطبيق المضمنة داخله كواجهة لها ولا تنتج ملفات تنفيذية. * من أول ما يجب علينا معرفته في أي لغة برمجة هي: المتغيرات : وهي عبارة عن مخازن يتم تحزين البيانات بداخلها في ذاكرة الحاسب وتختلف مساحة المخزن باختلاف حجم ما يتم تخزينه بداخله وهنا يجدر بنا الإشارة إلى شروط تسمية المتغيرات فيجب ألا يكون اسم المتغير من الكلمات المحجوزة في إكسل وهذه صورة لبعضها ويجب ألا يبدأ اسم المتغير برقم ويمكن أن يبدأ بحرف أو _ (underscore) وألا يحتوي على مسافة أو رمز خاص لذلك نجد أن vba تحتوي على مجموعة من أنواع البيانات التي تحدد نوعية المتغيرات منها: Byte : وهو اصغر أنواع البيانات مساحة حيث يشغل في ذاكرة الكمبيوتر 1 بايت ومداه الأرقام من صفر إلى 255 فقط. Integer : وهو لتخزين الأرقام الصحيحة بطول 5 خانات ويشغل في الذاكرة 2 بايت ويمكن اختصار تعريفه هكذا: dim variableName% بدلا من dim variableName as integer Long : وهو رقم صحيح طويل بطول 7 خانات ويشغل في الذاكرة 4 بايت ويختصر بإضافة & في نهاية اسم المتغير. Single : وهو لتخزين رقم عشري بطول 7 خانات ويشغل في الذاكرة 4 بايت ويختصر بإضافة ! في نهاية اسم المتغير. Double : لتخزين رقم عشري بطول 15 خانة ويشغل في الذاكرة 8 بايت ويختصر بإضافة # في نهاية اسم المتغير. Boolean : لتخزين قيم منطقية true/false ويشغل في الذاكرة 2 بايت. String : لتخزين النصوص حتى أكثر من 2 مليار حرف والحرف يشغل 1 بايت أي يتسع المتغير النصي إلى 2 جيجا بايت نصوص. Date : لتخزين التواريخ والأوقات ويشغل في الذاكرة 8 بايت يبدأ تاريخ vba من 1/1/100 حتى 31/12/9999 (لاحظ أن تاريخ الإكسل يبدأ من 1/1/1900) ويجب إحاطته بعلامة # مثال : mydate=#1/1/2000# Object : لتخزين الكائنات التي تحتوي على خصائص ووظائف ويتم تعيينه بجملة set ويشغل في الذاكرة 4 بايت أو حسب خصائص ووظائف الكائن المحدد. Variant : لتخزين كل الأنواع السابقة ويمكن تخزين المصفوفات بداخله أيضاً. وهذه الصورة توضح أنواع البيانات ......................... نأتي إلى معاملات لغة vba وتنقسم إلى : معاملات حسابية مثل الأس والضرب والجمع وهكذا يجب علينا معرفة أولوية حساب هذه المعاملات (أي العمليات يتم أولاً؟) وهي كالتالي مرتبة من الأكثر أولوية إلى الأقل كما بالصورة: نأتي الآن إلى معاملات المقارنة وهي تستعمل للمقارنة بين قيمتين وهي كالتالي: = يساوي <> لا يساوي > أكبر من >= أكبر من أو يساوي < أصغر من <= أصغر من أو يساوي والآن جاء دور المعاملات المنطقية : وهي التي تستعمل للتحقق من أكثر من شرط وهي كالتالي: Not : وهي لعكس نتيجة قيمة فإذا كانت true ترجع هي القيمة false والعكس صحيح. And : وترجع true إذا كان كلا الشرطين صحيح وترجع false فيما عدا ذلك. Or : وترجع false إذا كان كلا الشرطين غير صحيح وترجع true فيما عدا ذلك. Xor : وترجع false إذا كان كلا الشرطين صحيحاً أو خطأً وترجع true فيما عدا ذلك. Eqv : وهي عكس xor حيث ترجع true إذا كان كلا الشرطين صحيحاُ أو خطأً وترجع false فيما عدا ذلك. .......... إن أول ما يستعمله المبرمج في لغة البرمجة هي دالة الرسائل حيث يقوم من خلالها بإرسال رسائل للمستخدم أو يأخذ منه قيم من خلال مربع الإدخال فهيا بنا نتعلم الرسائل ومربع الإدخال: الصيغة العامة لصندوق الرسالة msgbox : MsgBox(prompt[, buttons] [, title] [, helpfile, context]) وتعني prompt نص التنبيه ثم بعدها الأزرار المستخدم في الرسالة ثم عنوان الرسالة ثم ملف المساعدة ثم رقم المقالة داخل ملف المساعدة وكل القيم اختيارية ما عدا نص الرسالة وهذه صورة تحتوي على أسماء الثوابت والقيم الرقمية المستخدم في خانة الأزرار. ويمكننا أن نضع القيمة الراجعة من الرسالة في متغير مثل: Mas=msgbox(“are you ready”,vbyesno,”title”) وهذه صورة توضح القيم الراجعة من صندوق الرسائل كثوابت وكقيم رقمية لاستعمالها في كاستجابة لاختيار المستخدم فإذا اختار المستخدم نعم نفذ كذا وإذا اختار المتخدم لا نفذ كذا. نأتي الآن لمربع الإدخال inputbox وهو شبيه بصندوق الرسائل وصيغته العامة هي: myValue = InputBox(message, title, defaultValue) وتحتاج إلى نص الرسالة وعنوان الصندوق والقيمة الافتراضية بحيث إذا لم يدخل المستخدم قيمة أو وافق على القيمة المقترحة منك ويمكننا التعامل مع القيمة الراجعة منه كما تعاملنا مع القيمة الراجعة من الرسالة. ..................... وبإذن الله في الدرس القادم سوف نتعرف على كيفية الإعلان عن المتغيرات والثوابت وكذلك ما يسمى بمدى المتغيرات وكيفية إنشاء ماكرو من خلال الكود وليس بتسجيل ماكرو وكذلك كيفية إنشاء دالة . وكيفية إضافة تعليقات للكود وبإذن الله سوف يكون فيديو. .......... وأعدكم بهديتين في الفيديو ولكن بعد أن يتم اكتشافهما من حضراتكم سوف يتم إخباركم بالسر فيهما. 5
أ / محمد صالح قام بنشر ديسمبر 12, 2011 قام بنشر ديسمبر 12, 2011 أشكر جميع الإخوة على المرور والكلمات الرقيقة وكما وعدتكم هذا أول فيديو وهو يخص الإعلان عن المتغيرات والثوابت بصورة كاملة وبصورة مختصرة ومعرفة نوع بيانات متغير بالكود وكذلك التحويل بين أنواع البيانات وسيتم بإذن الله شرح كيفية كتابة الماكرو والدالة وإضافة تعليقات في المرة القادمة ولا تنسوا أخاكم محمد صالح من صالح دعائكم 7
الحسامي قام بنشر ديسمبر 13, 2011 قام بنشر ديسمبر 13, 2011 السلام عليكم بارك الله فيك اخي محمد صالح على هذا الشرح وهو من اهم الدورس المتعلقة بال vba واسمح لي بهذه المداخلة البسيطة وليتسع صدرك لي قليللا هناك خطأ شائع يقع فيه اغلب المبرمجين في تعريف المتغيرات بل ان اغلب المراجع المتعلقة بهذا الجانب تقع في نفس الخطأ وهو طريقة تعريف مجموعة متغيرات متشابهة فلو فرضا اردنا تعريف المتغيرات c1 , c2 , c3 من النوع date فسيتم تعريفها كالتالي Dim c1, c2, c3 As Date وهذا بالطبع خطأ ففي الحالة هذه لن يتم إلا تعريف المتغير الاخير (c3) فقط من النوع (date) أما المتغيران (c1 , c2 ) فسيتم تعريفهما من النوع الافتراضي وبالتالي فأن الكود Dim c1, c2, c3 As Date يعادل الكود Dim c3 As Date وليس الكود الذي نريده Dim c1 As Date Dim c2 As Date Dim c3 As Date ويمكننا كتابته ايضا على النحو التالي Dim c1 As Date, c2 As Date, c3 As Date عذرا على هذه المداخلة ولكن اقتضت الفائدة لها والله من وراء القصد 2
أ / محمد صالح قام بنشر ديسمبر 13, 2011 قام بنشر ديسمبر 13, 2011 بارك الله لك أخي عماد بالفعل ما تقوله صحيح وربما اشتبه علي الأمر حيث توجد هذه الميزة في vb و vb.net ولكن بالتحقق من نوع بيانات المتغير c1 من خلال كتابة الدالة typename(c1) يظهر لنا أنه بالفعل تم الإعلان عن المتغير وحجز مكان في الذاكرة له ولكن يبقى نوع بياناته فارغاً empty فإذا تم تعيين قيمة له وكانت هذه القيمة تاريخ يظهر لنا أن نوع بيانات هذا المتغير date .............. فالفرق الجوهري بين المتغير الأول والثالث في السطر هو: أن المتغير الأول والثاني يمكن تغيير نوع بياناتهم حسب القيمة التي يتم تعيينها لهم أما المتغير الثالث يثبت على نوع البيانات التي تم تعريفه بها وممكن أن يرى أحدنا هذه بأنها ميزة في تغير نوع بيانات المتغير. .......... أنا شخصياً أعتمد على الطريقة الثانية وهي الأصح dim c1 as date,c2 as date,c3 as date وفي الأخير أتمنى أن نكون قد استفدنا من هذا الجزء وبانتظار ملاحظتكم بخصوص الهديتين 2
عبدالله المجرب قام بنشر ديسمبر 13, 2011 الكاتب قام بنشر ديسمبر 13, 2011 ما شاء الله شرح رائع وصوت اروع بارك الله فيك وبالفعل هذا من اهم الدروس واضيف الى المتغيرات هذا dim a1 as range وهذا يخص تعريف الخلايا او المدى والله اعلم 2
أ / محمد صالح قام بنشر ديسمبر 13, 2011 قام بنشر ديسمبر 13, 2011 ما شاء الله شرح رائع وصوت اروع بارك الله فيك وبالفعل هذا من اهم الدروس واضيف الى المتغيرات هذا dim a1 as range وهذا يخص تعريف الخلايا او المدى والله اعلم بارك الله لك أخي عبد الله range ليس نوع بيانات وإنما هو كائن object كامل له خصائصه وأحداثه وأفعاله Object : لتخزين الكائنات التي تحتوي على خصائص ووظائف ويتم تعيينه بجملة set ويشغل في الذاكرة 4 بايت أو حسب خصائص ووظائف الكائن المحدد. لذلك يلزمنا عند تعيين قيمة له أن نستعمل كلمة set بهذه الصورة set a1=range("a25") أما طريقة تعيين قيمة لمتغير فتتم بالصورة الافتراضية varibalename=value وبانتظار ملاحظات الإخوة ومناقشاتهم حول هذا الموضوع وقد ظهرت هديتي للإخوة في الشرح فما هي؟ حتى يتم شرحها أيضاً 1
mom101 قام بنشر ديسمبر 13, 2011 قام بنشر ديسمبر 13, 2011 (معدل) جزاك الله خيرا وبارك فيك . والسؤال الاول : هل نستطيع ان نقول ان الاعلان عن المتغيرات في VBA يكون بواسطة DIM وان الاعلان عن القيم الثابتة يكون بواسطة CONST والسؤال الثاني : في الدالة التي في الشرح تم تعريف F1 انها Integer يعني انها تحتمل ان تكون عدد من الارقام المتغيرة ثم بعدها تم تعريفها انها f1=10 فهل صارت بهذا المعادلة تعتبر قيمة ثابته فاذا كان كذلك فلماذا لم يتم تعريفها بداية كقيمة ثابتها const f1=10 ولك جزيل الشكر . تم تعديل ديسمبر 13, 2011 بواسطه mom101
أ / محمد صالح قام بنشر ديسمبر 13, 2011 قام بنشر ديسمبر 13, 2011 أخي الكريم mom101 بالنسبة للسؤال الأول: نعم تستعمل dim للإعلان عن المتغيرات و const للإعلان عن الثوابت وبالنسبة للسؤال الثاني : يتم تعريف المتغير ب dim ثم تعيين قيمة مبدئية له من خلال variablename=value وفي حالتنا هذه قمنا بتعيين قيمة 10 كقيمة مبدئية للمتغير f1 ولا يمنع هذا من تغير قيمة f1 أثناء عمل البرنامج فمثلا لو كتبنا هذا السطر f1=f1+10 msgbox f1 ستكون النتيجة ظهور الرقم 20 في رسالة وهذا يعني أن قيمة المتغير f1 تغيرت إلى 20 ولم تظل ثابتة على 10 التي تم تعيينها له مبدئياً أما إذا نفذت نفس الخطوات مع الثابت فقمت بالإعلان عنه ثم تعيين قيمة له (لاحظ عدم ذكر كلمة مبدئية) ثم حاولت أن تضيف له 10 بنفس الكود المستعمل مع المتغير ستظهر رسالة خطأ تخبر بأنه assignment to constant not permitted وتعني لا يجوز تعيين قيمة لثابت أتمنى أن يكون اتضح الأمر
saad abed قام بنشر ديسمبر 13, 2011 قام بنشر ديسمبر 13, 2011 استاذى محمد صالح اولا اود ان اتقدم بالشكر لك خاصة شرحك روعه والاخوة القائمين على الدورة عامة جزاك الله خيرا وبارك فيك ارجو ان يتسع صدرك ووقتك لمناقشة وشرح المتغيرات ببطء فهى من وجهة نظرى بداية البناء ما هو Objectsالكائن هل هو VBA Collection Objects The Application Object Workbook and Window Objects The Worksheet Object The Range Object علمنا منك انه يعلن عنه dim ويعين set ارجو ضرب امثله بسيط للاعلان عن كل كائن وتعيينه ولك الشكر اخوك سعد عابد
أ / محمد صالح قام بنشر ديسمبر 13, 2011 قام بنشر ديسمبر 13, 2011 شاكر جدا لجميع الإخوة على المرور وأتمنى للجميع الفائدة والمتعة وبالنسبة لأخي سعد : نوع البيانات object هو عام يمكن استعماله مع أي كائن من الكائنات المذكورة من سيادتكم وغيرها فمثلا تطبيق الإكسل هو عبارة عن كائن له خصائصه ومنها شرائط الأدوات ومكانه على الشاشة وله أحداثه (أفعال) منها مثلا quit ويمكن التعامل مع المصنف النشط ككائن وكذلك ورقة العمل النشطة وكذلك المدى المحدد وللتعرف أكثر على الكائنات الموجودة في برنامج الإكسل وخصائصها ووظائفها يمكنك استعمال مستعرض الكائنات object browser وذلك بالضغط على f2 في محرر الفيجوال بيسك حيث تجد في الناحية اليسرى كل الكائنات الممكنة وبالضغط على الكائن المطلوب يظهر في الناحية اليمنى خصائصه ووظائفه التي يمكنك استعمالها مع العلم أنه يمكن أن يكون كائن معين خاصية ضمن كائن آخر (رغم كونه كائن كامل) مثل المصنف النشط هو ضمن التطبيق وكذلك ورقة العمل النشطة ضمن المصنف وكذلك المدى ضمن ورقة العمل وهكذا أتمنى أن يكون الأمر اتضح
AbedElkader قام بنشر ديسمبر 14, 2011 قام بنشر ديسمبر 14, 2011 بارك الله فيك اخي الكريم mas123 على الشرح الرائع وجزاك الله خيرا ما الهدف من الاعلان عن المتعيرات وماذا سيحدث لو لم يتم الاعلان عن متغير
أ / محمد صالح قام بنشر ديسمبر 14, 2011 قام بنشر ديسمبر 14, 2011 بارك الله فيك اخي الكريم mas123 على الشرح الرائع وجزاك الله خيرا ما الهدف من الاعلان عن المتعيرات وماذا سيحدث لو لم يتم الاعلان عن متغير سؤال وجيه أخي عبد القادر يمكنك عدم الإعلان عن المتغيرات في vba وتكتفي فقط بتعيين قيمتها وسوف يتم إنشاء هذا المتغير عند قراءة سطر التعيين ولكن الأصح والأسلم من الوقوع في الخطأ هو الإعلان عن كل متغير وتحديد نوعه في جملة الإعلان تصور معي مثلا أنك لا تعلن عن المتغيرات ولا أنواعها: ثم عينت قيمة لمتغير اسمه student ثم بعدها قمت بتغيير قيمة هذا المتغير ولكن بخطأ إملائي مثلا student=tudent+10 (لاحظ الخطأ الإملائي في اسم المتغير) في هذه الحالة سيتم إنشاء متغير جديد باسم tudent وسيتم وضع 0 فيه ثم يتم إضافة 10 عليه وبالتالي تكون قد تغيرت قيمة student الأصلية إلى 10 فقط في حين أنك تريد أن تزيد على الرقم الأصلي 10 طبعاً تقول أنه يسهل عليك اكتشاف موضع الخطأ يدويا في حالة سطور قليلة من الكود ولكن كيف يتم متابعة الخطأ في الملفات التي تحتوي على أكواد كثيرة نأتي للصورة الصحيحة: إذا حدث هذا وأنت قد قمت بتنشيط require variable deceleration في نافذة الخيارات لمحرر الفيجوال بيسك أو كتبت Option Explicit في أعلى الموديول سيتم الانتقال مباشرة إلى موضع الخطأ ويسهل تصحيحه بإذن الله 1
الـعيدروس قام بنشر ديسمبر 14, 2011 قام بنشر ديسمبر 14, 2011 السلام عليكم الاستاذ القدير محمد صالح حفظك الله ورعاك ماهي الاسباب التي تنتج عن خطاء غير إثبات المتغيرات مثلا انا كتبت كود هكذا thedate = Format(Date, "long date") وهو معرف في بداية الكود على انه Dim thedate As String على أساس اريده ينقراء في مسج بوكس فيظهر خطاء عند كلمة التنسيق thedate = Format(Date, "long date") المشار اليها باللون الأحمر فأين بيت الداء بارك الله فيك
أ / محمد صالح قام بنشر ديسمبر 14, 2011 قام بنشر ديسمبر 14, 2011 أخي الكريم alidroos الدالة format ترجع قيمة من نوع Variant (String) ولا ترجع أي خطأ عندي ولكن جرب أن تعلن عن المتغير بنوع variant وليس string ليصبح الإجراء كاملا إلى Sub mas() Dim thedate As Variant thedate = Format(Date, "long date") MsgBox thedate End Sub
الـعيدروس قام بنشر ديسمبر 14, 2011 قام بنشر ديسمبر 14, 2011 (معدل) استاذي الحبيب وبرضه مثل ماقلت جربت سابقاً اعلنت المتغير Dim thedate As Variant ونفس الخطاء يظهر استاذي الحبيب محمد صالح انا شغال على الكود طبيعي في ملفاتي والمشكله حاصله عند الاخ الفاضل AbedElkader الذي هو متواجد في هذا الموضوع انا حبيت اعرف اين الخطاء كي نتلافى مثل هكذا مشاكل تم تعديل ديسمبر 14, 2011 بواسطه alidroos 1
أ / محمد صالح قام بنشر ديسمبر 15, 2011 قام بنشر ديسمبر 15, 2011 أخي عبد القادر ياريت تذكر لي رقم الخطأ ونص رسالة الخطأ ونوع نظام التشغيل لديك حتى أتمكن من معرفة سبب الخطأ وعلاجه
أ / محمد صالح قام بنشر ديسمبر 15, 2011 قام بنشر ديسمبر 15, 2011 والآن مع الجزء الثاني من الفصل الثالث لدورة vba والذي يحتوي على: إنشاء ماكرو بدون معاملات (parameters) إنشاء ماكرو بمعاملات إنشاء دالة بدون معاملات (parameters) إنشاء دالة بمعاملات استدعاء ماكرو أو دالة من داخل ماكرو استعمال نافذة التصحيح debug ربط النصوص والمتغيرات ونتائج الدوال ببعض إضافة تعليق التحكم بالتعليقات بالقائمة المتخصرة ولا ينقصني سوى دعاؤكم لي بالخير والتوفيق في الدنيا والآخرة 6
الـعيدروس قام بنشر ديسمبر 15, 2011 قام بنشر ديسمبر 15, 2011 (معدل) السلام عليكم أسأل الله ان يوفقك دنيا واخرة طريقة تضليل الكود الغير مستخدم معلومة كنت اتمناها فأعتبرها إضافه من قبلك للإكسل لجهلي التام بها ولي استفسار اخر استاذ محمد صالح وهو هل اقدر احتفظ بأدواتي في محرر الفيجول ادواتي يعني المعادلات والمتغيرات التي استخدمها في صياغة الاكواد بإستمرار يعني عند كتابة كود اريد استخدم on error resume next وغيرها تكون الجمله موجوده اختارها من القائمة فتكتب في السطر الواقف عليه في الكود بارك الله فيك تم تعديل ديسمبر 15, 2011 بواسطه alidroos 1
أ / محمد صالح قام بنشر ديسمبر 15, 2011 قام بنشر ديسمبر 15, 2011 السلام عليكم أسأل الله ان يوفقك دنيا واخرة طريقة تضليل الكود الغير مستخدم معلومة كنت اتمناها فأعتبرها إضافه من قبلك للإكسل لجهلي التام بها ولي استفسار اخر استاذ محمد صالح وهو هل اقدر احتفظ بأدواتي في محرر الفيجول ادواتي يعني المعادلات والمتغيرات التي استخدمها في صياغة الاكواد بإستمرار يعني عند كتابة كود اريد استخدم on error resume next وغيرها تكون الجمله موجوده اختارها من القائمة فتكتب في السطر الواقف عليه في الكود بارك الله فيك أشكر جميع الإخوة على المرور ولكن اسمح لي أخي أبا نصار العيدروس ماذا تعني بـ "طريقة تضليل الكود الغير مستخدم" وبالنسبة لطلبك الثاني فمضمونه هو الهدية الثانية وإن كان طلبك الأول يخص كيفية تلوين الكود داخل نافذة الفيجوال بيسك كما يظهر في vb.net فهذه هي الهدية الأولى التي وعدتكم بهما لمن يكتشفهما .......... وأعدكم بهديتين في الفيديو ولكن بعد أن يتم اكتشافهما من حضراتكم سوف يتم إخباركم بالسر فيهما. وفقنا الله وإياكم لكل ما يحب ويرضى 1
الـعيدروس قام بنشر ديسمبر 15, 2011 قام بنشر ديسمبر 15, 2011 السلام عليكم استاذي الحبيب محمد صالح حفظك الله ورعاك " طريقة تضليل الكود الغير مستخدم " اعتبرها الهديه الثانية وياريت تكثر الهدايا هداياك قيمة لاتقدر بثمن بارك الله فيك ووهب لك ماتتمنى
عبدالله المجرب قام بنشر ديسمبر 15, 2011 الكاتب قام بنشر ديسمبر 15, 2011 السلام عليكم بعد اذن استاذنا الفاضل والماسة المنتدى اضع هنا شرح لطريقة كتابة الكود والدالة في المحرر كنت قد اعددته من فترة 5
AbedElkader قام بنشر ديسمبر 15, 2011 قام بنشر ديسمبر 15, 2011 أخي عبد القادر ياريت تذكر لي رقم الخطأ ونص رسالة الخطأ ونوع نظام التشغيل لديك حتى أتمكن من معرفة سبب الخطأ وعلاجه بارك الله فيك اخي العزيز على الشرح الوافي بالنسبة لسؤالك عن الخطأ الحاصل عندي هو كما في الصورة اما بالنسبة لنظام التشغيل عندي فهو ويندوز 7 واستخدم اوفيس 2010
معتصم محمد قام بنشر ديسمبر 15, 2011 قام بنشر ديسمبر 15, 2011 أخي عبد القادر ياريت تذكر لي رقم الخطأ ونص رسالة الخطأ ونوع نظام التشغيل لديك حتى أتمكن من معرفة سبب الخطأ وعلاجه بارك الله فيك اخي العزيز على الشرح الوافي بالنسبة لسؤالك عن الخطأ الحاصل عندي هو كما في الصورة اما بالنسبة لنظام التشغيل عندي فهو ويندوز 7 واستخدم اوفيس 2010 أستاذ عبدالقادر اعتقد ان الخطأ الذي تحصل عليه نتيجة استخدامك للمتغير على انه دالة، بمعنى انت قمت بتعريف المتغير FORMAT على انه من النوع Varient لكن في VBA توجد دالة اسمها Format تقوم بعمل تنسيق على قيمة محددة بالتنسيق الذي تريده ويكون إستخدام دالة التنسيق Format كما ذكر الأستاذ / محمد صالح Format(myValue, myFormat) Format(1234.5, 0.00) نتيجتها ستكون 1234.50
الـعيدروس قام بنشر ديسمبر 16, 2011 قام بنشر ديسمبر 16, 2011 السلام عليكم الاستاذ الحبيب معتصم محمد هذه كانت احد المحاولات للحصول على حل هو كان الكود كما تفضلت بهذا الشكل Sub MACRO15() Dim thedate As String, thetime As String, greeting As String, fullname As String, firstname As String, ali As String Dim spaceinname As Integer, abood As String, alidroos As String, MY As String, thkr As String, thedat As String VBA.Calendar = vbCalGreg thedat = Format(Date, "long date") VBA.Calendar = vbCalHijri thedate = Format(Date + 1, "long date") thetime = Format(Time, "medium time") abood = "التـاريخ هجري" ali = "التاريخ ميلادي" alidroos = "السـاعه" thkr = "لاتنسـى ذكــر الله" MY = "لا اله الا الله محمد رسول الله maicl2010ye@gmail.com" Select Case Time Case Is < TimeValue("12:00"): greeting = "السـلام عليكم صبــاح الخير" Case Is >= TimeValue("12:00"): greeting = "السـلام عليكم مســاء الخير" Case Else: greeting = "تصبح على خير" End Select fullname = Application.UserName spaceinname = InStr(1, fullname, "", 1) If spaceinname = 0 Then spaceinname = Len(fullname) firstname = Left(fullname, spaceinname) greeting = greeting MsgBox abood & thedate & vbNewLine & "=====================" _ & vbNewLine & vbCrLf & ali & thedat & vbNewLine & _ "=====================" & vbNewLine & vbCrLf & alidroos & thetime _ & vbNewLine & "=====================" & vbNewLine & vbCrLf & thkr _ & vbNewLine & "=====================" & vbNewLine & vbCrLf & MY _ & vbNewLine & "====================================" & vbNewLine, vbInformation, greeting End Sub وعند الأخ عبدالقادر لايعمل بهذا الشكل ولا عند استخدام متغير Variant
الردود الموصى بها