أبو هاجر المصري قام بنشر مارس 3, 2009 الكاتب قام بنشر مارس 3, 2009 معلش يا جماعة اني مقصر بس والله كنت مريض بقالي كام يوم واوعدكم ان شاء الله غذا بتلاقوا استكمال كويس
نزار سليمان عيد قام بنشر مارس 4, 2009 قام بنشر مارس 4, 2009 اخي ابو هاجر شافاك الله وعافاك اخوك ابو خالد
أبو هاجر المصري قام بنشر مارس 4, 2009 الكاتب قام بنشر مارس 4, 2009 (معدل) بسم الله الرحمن الرحين الأخ يعقوب والأخ نزار جزاكم الله خيرا نستكمل سويا السلسلة الدرس الأول من الجزء الرابع ( 4/1 ) الجزء الرابع المتغيرات وأنواع البيانات والثوابت Variables, Data Types, and Constants في هذا الجزء سوف تتعلم التالي : * أنواع المتغيرات . * توجيه مدخلات المستخدمين . * المصفوفات . * التفاعل مع المستخدمين . - كما أن برنامج إكسيل يركز على جداول البيانات ، فمن الطبيعي أن أبدأ الموضوع المتعلق بالمتغيرات بأن أطلب منك التفكير في التالي : ما هي أنواع البيانات الممكن إدخالها في خلايا جدول البيانات ؟ وكيف يمكنك استخدامها ؟ أنت تعرف أنه يمكنك إدخال الأرقام والنصوص في أي خلية من خلايا جداول بيانات إكسيل ... - أيضا فإنك تعلم أو ربما لا تعلم أن تنسيق خلايا جداول البيانات يمكن تغييره إلى عدة احتمالات ممكنة ، فعلى سبيل المثال يمكن تنسيق الأرقام لتصبح غامق Bold في تنسيق نمط الخط أو أحمر في تنسيق لون الخط ، يمكن تنسيقه أيضا على اعتبار أن قيمته تمثل عملة أو كنسبة مئوية ، كذلك يمكن تحويل النص الذي تم إدخاله تلقائيا إلى تاريخ أو وقت ، كما أن محتويات أي خلية من خلايا جداول البيانات يمكن تغييرها أو حذفها في أي وقت .. 1) إعلان المتغيرات Declaring Variables - عملية إعلان المتغيرات هي أن تخبر الكمبيوتر بأن يحجز مكان في الذاكرة لاستخدامه فيما بعد ، وكنتيجة لذلك تعمل أكواد VBA بطريقة أكثر كفاءة ، لإعلان متغير في الكود استخدم تعبير ( DIM ) وهو اختصار لـ ( Dimension ) . Dim myVar As Integer - واسم المتغير هنا ( myVar ) ، وكما ترى فهو : 1- يبدأ بحرف أبجدي . 2- لا يتجاوز 255 حرف . 3- لا يحتوى على فواصل . - لا تستخدم علامات الترقيم أو الحروف غير الاعتيادية الأخرى في اسم المتغير . - استخدام الرمز underscore ( _ ) يسمح به ويعمل بشكل جيد لفصل العديد من الكلمات الواردة في اسم متغير واحد ، ومثال على ذلك ( Car_Type ) . - لا تستخدم كلمات رئيسية محفوظة في VBA لتسمية متغير ، كما لا تستخدم نفس الاسم الواحد أكثر من مرة في نطاق أكواد واحد ( سيناقش لاحقا في هذا الجزء ) ، وكالعرف المتبع أو كتقليد متبع فإنه يجب أن يكون اسم المتغير واصفا لعمله ، على سبيل المثال إذا كنت تستخدم متغير خاص بأنواع السيارات فإنه من الأفضل أن يكون اسم المتغير CarType أو carType ، ويفضل أن يبدأ اسم المتغير بحروف صغير ( small ) ولبداية الأسماء التالية حروف كبيرة ، حاول أن تختصر الأسماء قدر الإمكان بحيث يكون واضحا . - ومن الصواب إتباع الأعراف السائدة في تسمية المتغيرات والتي لا تتعارض مع قواعد VBA لتأكيد إعلان المتغيرات بشكل واضح ومفهوم ، استخدم الخيار Explicit في أول بيان في الموديول module قبل كتابة أي إجراء كالموجود بالشكل أسفل .. 2) مجال المتغير Variable Scope - ونطاق المتغير أو مجاله سواء الذي قد يكون متغير خاص أو عام Private or Public يشير إلى الوقت الذي يكون فيه المتغير متاحا أو مرئيا للبرنامج ، وعندما يكون المتغير داخل نطاقه ، فإنه يمكن الوصول إليه أو معالجته ، وعندما يكون المتغير خارج نطاقه فإنه يكون غير مرئي بالنسبة للبرنامج وبالتالي لا يمكن الوصول إليه . - وإعلان متغير ضمن كتلة إجراءات وأكواد VBA هو عبارة عن مستوى إجرائي متغير ، والمستوى الإجرائي المتغير يتم تنفيذه فقط وفق الإجراء الذي تم إعلان متغير عنه ، في الشكل أسفل ، فإن المتغير myVar4 يمكن للبرنامج رؤيته ومن ثم التعامل معه عندما يتم تنفيد الكود Activate() الخاص بورقة العمل .. - ما يحدث هو عند تنفيذ البرنامج للحدث Activate() فإن المتغير myVar4 يحجز حجما في الذاكرة ، إن تنفيذ البرنامج يتم عن طريق نواتج الأحداث المتتابعة حتى الوصول إلى سطر End Sub من الكود ، بعد ذلك يتم تفريغ الذاكرة من المساحة المخصصة للمتغير والتي لم تعد متاحة بعد ذلك ، في كل مرة يتم فيها تنفيذ البرنامج يتم حجز مساحة من الذاكرة وتفريغها مرة أخرى ، وبالتالي فإن myVar4 لن تحجز أو تحتفظ بقيمتها ما بين الاستدعاء والتنفيذ ... - في هذا الإجراء سيقون المتغير myVar4 بزيادة قيمته في كل مرة يتم فيها استدعاءه إلى أن يتم التنفيذ . - والمتغيران تم إعلانهما عن طريق الكلمات Dim و Private و Public ، وكلمتي (Private و Public ) يستخدمان للإعلان عن متغير عام ، والمتغير myVar5 تتضح رؤيته لأي من إجراءات الموديول ، في حين أن myVar4 فقط يمكن الوصول إليه بعد إجراء تفعيل ورقة العمل Activate() ، وتعد تلك المتغيرات التي تم إعلانها في قسم الإعلانات العامة عن طرق بكلمة Public تشير إلى شمولية أو عمومية ذلك المتغير . - لذلك فإن الكلمات الرئيسية ( Dim , Private ) لها نفس الوظيفة عند إعلان المتغير في القسم العام في أي موديول ، أما الكلمة الرئيسية Public يمكن استخدامها للإعلان عن متغير شامل ( global ) في أي موديول قياسي أو موديول خاص بكائن . تم تعديل مارس 4, 2009 بواسطه أبو هاجر المصري 1
amoudi قام بنشر مارس 4, 2009 قام بنشر مارس 4, 2009 السلام عليكم هو كلامك مظبوط بس هو كان المقصود ان اي نطاق بين علامتين تنصيص اكثر من مرتين غير مقبول وجرب انت بنفسك** يعني تحدد أكثر من خلية بالنطاق كالتالي : Range("A13,A18,D14:D18,E21,F14,F9,C11:F11").Select يمشي تمام اخترت اكثر من خلية ونطاقة من الخلايا ضمن التحديد ** وكمان ينفع كده : Range("A1:E9").Select طبعا ده عادي نطاق عبارة عن من الى ** لكن اللي كان مقصود التالي : Range("G20", "G19").Select اختيار مفيهوش مشاكل Range("G20", "G19", "F8").Select هو دة اللي كان القصد انه ميصلحش لانه محدد 3 نطاقات بين 3 اقواس مضاعفة ارجو ان يكون التوضيح وصل ، ولو فيه اي غلط ياريت توضحه لينا معليش اخي لو انت سألت نفسك ليش يسمح ب نطاقين وليس 3 او 4 او 5 اخي العزيز لأن لمقصود ليس 2 او 3 او4 ولكن المقصود من الى يعني اثنين (From --- To) تحياتي 1
عبدالله باقشير قام بنشر مارس 4, 2009 قام بنشر مارس 4, 2009 (معدل) السلام عليكم الاخ/ابوهاجر المصري ------------- المحترم الله يبارك فيك اخي على هذا المجهود المبذول جعله الله في ميزان حسناتك ========================================== بالنسبة لتحميل الصور بامكانك تحميلها كمرفق في المشاركة وبعد التحميل اذهب الى القائمة التي مكتوب فيها (الوصول للمرفقات الحالية) افتحها وستجد ثلاثة اختيارات : اختار : (ادخل الملف المرفق في صندوق النص ) بعد ما تحدد في صندوق النص موقع الادخال بالتاشير عليه هذا علشان ما تتعب نفسك في تحميلها الى اماكن اخرى اخوك خبور خير تم تعديل مارس 4, 2009 بواسطه خبور خير 1
أبو هاجر المصري قام بنشر مارس 4, 2009 الكاتب قام بنشر مارس 4, 2009 شكرا لك اخي خبور وفرت عليه والأخ amoudi الصراحة مشفاهم خصوصا وانا بشتغل من الصبح على العموم هحاول افهم بكرة ان شاء الله وان معرفتش لازم تشرحها لنا
يحيى حسين قام بنشر مارس 5, 2009 قام بنشر مارس 5, 2009 أخي ابو هاجر جهد تشكر عليه ربنا يقدرك و تكمل موضوعوك للأخر إن شاء الله و مداخلات جميلة من الاخ عمودي و اتمنى يكون في مداخلات اكثر من الاخوة خبراء البرمجة في المنتدى عشان الموضوع يكون كامل ان شاء الله و الاخ خبور طريقة جميلة لتحميل الصور و اقتراح صغير للخ ابو هاجر انه في اخر كل شرح ترفق ملف الشرح للموضوع منها حيسهل الموضوع على الاخوة في متابعة الموضوع بعيدا عن النت و اسف للإطالة و دمتم في حفظ الله و رعايته
قصي المغترب قام بنشر مارس 5, 2009 قام بنشر مارس 5, 2009 (معدل) السلام عليكم .. أول شي بتشكرك على أسلوبك السلس و الحلو بالشرح.. بس في عندي مشكلة... عمبحاول أكتب الاكواد اللي انت حاططها بس ماعمبشوف أي تغييرات على ورقة الاكسل.. ماعمبعرف كيف أشغل الكود...ياريت تدلني... شكراً الك مرة تانية... تم تعديل مارس 5, 2009 بواسطه قصي المغترب
أبو هاجر المصري قام بنشر مارس 5, 2009 الكاتب قام بنشر مارس 5, 2009 (معدل) أخي قصي واضح انك مش متابع الشرح من البداية عموما في طريقتين لعمل ماكرو يتم تنفيذه على الاكسيل 1- تسجيل ماكرو ، وهذه الطريقة سهلة ولا تحتاج كثيرا للكتابة والتعديل في الأكواد ( أدوات - ماكرو - تسجيل ماكرو ) وبعد ما تعرف الكمبيوتر انت عايز الماكرو يعمل ايه ( ولاحظ ان اي شئ هتعمله هيتم تسجيله ) اضغط ايقاف . 2- كتابة الأكواد زي ما انت عامل ، بس دي ليها اصول وقواعد ، أهم شئ تعرف الكمبيوتر انت بتعمل ايه اصلا يعني تكتب بداية الكود وعنوان الماكرو وبعدين خطواتك واجراءاتك خلال الماكرو ككل ، وبعدين نهاية طبعا . انصحك تقرا الجزء اللي فات كويس وتابع معانا وبرضة لو فيه اي حاجة انا معاك والاخوة كمان مش هيقصروا لو انت لسة في سنة اولى vba انا في تانية مش اكتر تم تعديل مارس 5, 2009 بواسطه أبو هاجر المصري
أبو هاجر المصري قام بنشر مارس 8, 2009 الكاتب قام بنشر مارس 8, 2009 السلام عليكم ورحمة الله وبركاته آسف أيها الأخوة كان فيه مشكلة يمكن في سيرفر المنتدى ولذا كان هناك تأخير
أبو هاجر المصري قام بنشر مارس 8, 2009 الكاتب قام بنشر مارس 8, 2009 نستكمل سويا الجزء الرابع وهذا هو الدرس الثاني منه ( 4-2 ) 3) أنواع البيانات - عند إعلان نوع من المتغيرات فإن ذلك يعني أنه يجب عليك تحديد نوع القيمة التي يمكن تخزينها داخل الذاكرة المخصصة للمتغير ، هناك العديد من أنواع البيانات ، وتعد الأكثر شيوعا هي التي ضمن الجدول بالأسفل ، فعلى سبيل المثال : Dim myInt As Integer - هنا أنت تريد للمتغير ( myInt ) أن يحتوي فقط على عدد ( Integer ).. ** أنواع البيانات العددية ... - تعد أنواع البيانات العددية موجودة بالجدول أسفل ( Integer – Long – Single – Double ) ، فلو أنك أعلنت عن متغير على هيئة ( Integer أوLong ) فإنها يمكن أن تشمل أو تمثل كل الأعداد الصحيح داخل النطاق المحدد ، ولا يمكنها أن تمثل الكسور أو القيم العائمة أو المنحرفة ، ولتدخل تلك القيم داخل نطاق المتغير فعليك استخدام ( Single – Double ) بدلا من ذلك . - انتبه جيدا للقيمة العددية للمتغير الذي أعلنت عنه ، فإن القيمة لو كانت كبيرة جدا على نوع المتغير المستخدم ، فسوف يقف برنامجك . - على سبيل المثال ، فالكود التالي سوف يولد الخطأ التالي ( overflow error ) لأن القيمة 60000 تعتبر خارج النطاق المسموح لنوع قيمة المتغير العددي ... Dim myInt As Integer myInt = 60000 untitled.bmp - عليك أن تكون حذرا عند خلط أنواع البيانات العددية لأنك قد لا تحصل على النتيجة المرجوة ، فالكود أسفل سيتم تنفيذه بدون أخطاء أو مشاكل ، ولكن الناتج سيكون ( 11 ) بعد التنفيذ ، وليس ( 10.8 ) كما توقعت ، فحسب القيمة المخزنة للإجابة ( answer ) فإنها يتم تقريبها إلى أقرب عدد صحيح .. Dim answer As Integer Dim num1 As Single Dim num2 As Integer num1 = 2.7 num2 = 4 answer = num1 * num2 - ولتفادي ذلك الخطأ ، غير قيمة ( answer ) إلى نوع البيانات ( Single ) كالتالي : Dim answer As Single Dim num1 As Single Dim num2 As Integer num1 = 2.7 num2 = 4 answer = num1 * num2 - يمكنك الاستعانة بالماكرو أو الأكواد للقيام بالكثير من العمليات الحسابية ، يمكنك إضافة أو طرح أو قسمة أو ضرب أو تربيع أو تكعيب المتغيرات العددية ، أو ترفعهم لأي أس تريده ، أنظر الجدول أسفل لتعرف الرموز المشهورة التي يمكن أن تستخدمها في العمليات الرياضية في VBA .. أشهر الرموز الرياضية المستخدمة في VBA .. Additionإضافة / + Subtractionطرح / - Multiplicationضرب / * Divisionقسمة / / Exponentialأس / ^ يمكنك القيام بأي عملية حسابية للمتغيرات العددية ، والتالي بعض الأمثلة لذلك : Dim num1 As Integer Dim num2 As Integer Dim answer As Integer num1 = 4 num2 = 2 answer = num1 + num2 ‘ answer Holds 6 answer = num1 - num2 ‘ answer Holds 2 answer = num1 * num2 ‘ answer Holds 8 answer = num1 / num2 ‘ answer Holds 2 answer = num1 ^ 2 ‘ answer Holds 16 answer = 2 ^ num2 ‘ answer Holds 4 - وأعتقد أنك ستواجه الكثير من هذه العمليات الحسابية في برامجك .. ** أنواع سلسلة البيانات String - لتصف بيانات ( نصية أو رموز ) ، يجب أن تكون نوع البيانات للمتغيرات ( String ) ، هكذا يمكن أن تكون البيانات نصا أو عددا أو حرفا أو رمزا ( كعلامات الترقيم ) ، وتحديدا ، فإن أي شيء يمكن كتابته بلوحة المفاتيح يمكن تعيينه والوصول إليه عن طريق نوع بيانات String ، على سبيل المثال : Dim myName As String myName = “Peter Anderson” - هناك نوعان من سلسلة البيانات ، طول متغير وطول ثابت ، فالمثال أعلاه يعتبر من نوع البيانات ذات الطول المتغير ، لأن myName يمكنها أن تكون أي نص وأي أحرف ( أنظر الجدول أعلاه ) ، وفيما يلي مثال للإعلان عن سلسلة ثابتة الطول Dim myString As String * 10 myString = “ABCDEFGHIJKL” - هنا فسلسلة المتغير myString يمكنها فقط أن تكون عبارة عن 10 رموز ، عند تشغيل الكود فإن فقط أول عشرة رموز في المثال سيتم تخزينها في أي متغير ( ABCDEFGHIJ ) ، الطول الثابت عادة ما يستخدم كجزء من نوع بيانات تعريف المستخدم ( User-Defined ) وفي معظم الحالات ، فمن المستحسن استخدام الطول المتغير لسلسلة البيانات حيث لا تعرف طول السلسلة المخزنة في المتغير . - عند إعلان طول سلسلة ثابتة ، لا تستخدم الفاصلة في الأرقام التي تحدد حجم السلسلة ، وفي الواقع فإنك لا تستخدم أبداً الفواصل فيما يخص القيم الرقمية في VBA . ** التاريخ كنوع بيانات .. - ماذا تفعل لو كنت تريد أن تحسب عدد الأيام بين تاريخين معينين ؟ حسنا .. أنت تقوم بالإعلان عن متغير ونوع بياناته عبارة عن تاريخ ، ولو استخدمت السلسلة String للإعلان عن متغير لتاريخ فلا يمكنك إجراء الحسابات عليها . Dim Today as Date Dim LastTime As Date = # 6/6/2007# ‘here the variable is a fix dateهنا المتغير تاريخ ثابت Dim NumDay As Integer Today = Now NumDay = Today – LastTime - عند تشغيل هذا الكود ، فإن NumDay سيخزن عدد الأيام التي انقضت منذ ( 6/6/2007 ) ولذلك فإن بيانات التاريخ تعطيك النتائج التي تريدها بشكل أكثر مرونة .. - في VBA يتم وضع التواريخ والأزمنة بين علامتي (# ) كالموضح بالمثال أعلاه . - يتم عرض بيانات التاريخ والوقت للمتغيرات طبقا لإعدادات التاريخ والوقت في نظامك ، ولذلك فهي تعتمد على إعدادات التاريخ والوقت للجهاز الذي يتم تشغيل البرنامج عليه . ** أنواع البيانات البديلة أو المتنوعة (Variant ) .. - أنواع البيانات البديلة قابلة للمقارنة مع الفئة العامة لتنسيق الأرقام مع جداول البيانات في تطبيق إكسيل ، ويتم الإعلان عنها كالتالي : Dim myUnknown Dim myUnknown2 As Variant - يمكنك استخدام نوع المتغيرات البديلة لحجز أي نوع من البيانات ما عدا سلسلة البيانات ذات الطول الثابت ، فهذه الطريقة تعطي المبرمج مزيدا من المرونة ، ولكن إذا بالغ في استخدامها فإنها تصبح خطيرة وتنفيذ البرنامج يكون أكثر بطئا ، ومن غير المستحسن استخدامها بسبب هذا السبب ، فعلى سبيل المثال .. Dim myVar As Integer myVar = 5 myVar = “Five” - سيؤدي هذا إلى حدوث خطأ عدم توافق (mismatch error ) في محاولة إدخال السلسلة ( Five ) داخل متغير عددي ، ولحل هذه المشكلة قم بتغيير المتغير myVar للقيمة البديلة أو المتنوعة ( Variant ) ، وبذلك سيتم تنفيذ الكود ، والمتغير ( myVar ) سيحتجز القيمة (Five ) عند الاكتمال ، الكود التالي سيعمل بدون مشاكل .. Dim myVar myVar = 5 myVar = “Five” - هذا الكود يمكن المتغير ( myVar ) من أن يأخذ القيمة العددية ( 5 ) ولو لفترة قصيرة ، قبل أن يتخلى عن هذه القيمة ويأخذ القيمة ( Five ) في النهاية ، ومع الكود أعلاه أيضا احتمال وقوع مشاكل ووقوف البرنامج عن العمل , حيث أنه لا يمكن استخدام القيمة ( Five ) في العمليات الحسابية وسينعكس ذلك على أداء برنامجك وربما لتوقفه . - أيضا فإن استخدام قيم البيانات المتنوعة سيجعل من الصعب جدا تصحيح برنامجك ، على الرغم من أنه مغري لاستخدام البدائل كوسيلة لتجنب الأخطاء التي توقف عمل البرنامج ( كالمثال أعلاه ) ، في الواقع فإن استخدام هذا النوع من البيانات يجعل برنامجك غير محكم ويمكن أن يتسبب في أخطاء منطقية يصعب العثور عليها . ** أنواع البيانات المنطقية Boolean .. - تعد البيانات المنطقية بسيطة ، فهي إما قيمة حقيقية أو مزيفة ( True or False ) ، كما يمكنها أن تعبر عن القيمة ( True ) بـ ( 1 ) وعن القيمة ( False ) بـ ( 0 ) ، ويتم استخدامها عادة عند التعامل مع هياكل البرمجة التي تستخدم الشروط ، ( وسوف يتم توضيح ذلك في جزء لاحق من الدورة ) ، وإعلان متغير منطقي يتم على النحو التالي ... Dim condition As Boolean condition = False ** نوع بيانات الثوابت Constants - قد تحتاج في بعض الأحوال إلى استخدام متغير لا تتغير قيمته أثنا تنفيذ إجراءات برنامجك ، وفي هذه الحالة فمن الممارسات الجيدة أن تعلن عن تلك المتغيرات بأنها ثابتة ، هذا يجعل الكود من السهل عليه قراءتها ومن السهل أيضا عليه تغيير قيمتها إن احتجت ذلك ، كاستخدام نطاقات مسماه في صيغ جداول البيانات .. Const PI As Double = 3.14159 Dim circumference As Single Dim diameter As Single diameter = 9.33 circumference = PI* diameter أعذرونا على التقصير في الدرس القادم ( المصفوفات ) إعلانها – تحديد القيم فيها – المصفوفات متعددة الأبعاد – ديناميكية المصفوفات ... شكرا لكم ، وأسألكم الدعاء
UM HAMZA قام بنشر مارس 9, 2009 قام بنشر مارس 9, 2009 بارك الله فيك وجزاك كل خير موضوع رائع ومتميز جدا
amoudi قام بنشر مارس 9, 2009 قام بنشر مارس 9, 2009 السلام عليكم تعد البيانات المنطقية بسيطة ، فهي إما قيمة حقيقية أو مزيفة ( True or False ) ، كما يمكنها أن تعبر عن القيمة ( True ) بـ ( 1 ) وعن القيمة ( False ) بـ ( 0 ) أذا حنتكلم عن VBA فأعتقد true = -1 false = 0 تحياتي
أبو هاجر المصري قام بنشر مارس 10, 2009 الكاتب قام بنشر مارس 10, 2009 أشكرك كثيرا يا اخ عمودي بس حقيقة موضوع الإشارة السالبة دة معرفش والله لان انت عارف اني في الأول وفي الآخر بتعلم VBA ودي ترجمة وعلشانك تعرف وعلشان الكل برضة النصوص الأصلية مليانة أخطاء حتى في الأكواد وبحاول جاهدا التصليح بقدر الإمكان أنا المعلومة صح أم خطا فأنا زي الجميع وأرجو يا جماعة الخير اللي يصحح كلمة أو نص أو كود أو عبار لا يوجه الخطأ واللوم لي أنا أنا بترجم شئ مبهم وبحاول أنسقه يطلع في شكل موضوع كويس للإفادة لي ولغيري مش أكثر ولا أقل وإذا حد شايف إن الموضوع غير مهم أو غير مجدي يقول وانا عند رغبتكو بس أنا الصراحة شايف ناس بتستفيد أقصد اللي يحب يصحح معلومة تبقى للكل ويوضح دي ليه غلط والصح إيه هنعمل كده علشان ده يعني وربنا مع الجميع وتحياتي لك أخي عمودي تاني مرة
احمدزمان قام بنشر مارس 10, 2009 قام بنشر مارس 10, 2009 اخي ابو هاجر جزاك الله كل خير عمل رائع وشرح جميل الله يوفقك دائما و ابدا لكل خير
amoudi قام بنشر مارس 10, 2009 قام بنشر مارس 10, 2009 السلام عليكم اولا شكرا لك على مجهودك لتوضيح الشي ذكرت True =1 , وفي تصحيحي True=-1 انا ذكرت انه اذا حنتكلم عن VBA يعني مش في معادلات الخلايا امثلة TRUE +TRUE=2 خطاء TURE+TRUE=-2 TRUE *1 =1 خطاء TRUE*1 = -1 True + 5=6 خطاء True + 5=4 Dim var As Boolean var = True If var = 1 Then MsgBox "var=1" Else MsgBox "var <>1" End If النتيجة الرسالة الثانية Dim var As Boolean var = True If var = -1 Then MsgBox "var=-1" Else MsgBox "var <>-1" End If النتيجة الرسالة الأولى تحياتي
أبو هاجر المصري قام بنشر مارس 10, 2009 الكاتب قام بنشر مارس 10, 2009 (معدل) أخي أحمد يعقوب بمجرد دخولك الموضوع بتشرفه حقيقي أخي amoudi جزاك الله خيرا على التوضيح أشكرك كثيرا ومنكم نستفيد وياريت لو تبقى على طول تعلق على الاضافة بتاعتي لما فيه الخير للجميع تم تعديل مارس 10, 2009 بواسطه أبو هاجر المصري
amoudi قام بنشر مارس 10, 2009 قام بنشر مارس 10, 2009 السلام عليكم اخي ابوهاجر اشكرك على سعة صدرك بس كله علشان الجميع يستفيد وانا بصراحة مستني ندخل في اكواد متقدمة , وقتها اعتقد المداخلات حتكون مفيدة أكثر . للمعلومية Dim condition As Boolean condition = False بشكل افتراضي اول ما نعرف متغير من نوع Boolean حيأخد القيمة False تحياتي
هادى محمد المامون سالم قام بنشر مارس 11, 2009 قام بنشر مارس 11, 2009 بسم الله الرحمن الرحيم اخى ابو هاجر موضوع رائع و اذا اردت اضافه قد تكون مفيده فاليك المزيد : اغلب استخدامى Boolean عند التعامل مع UserFor و مايتضمنه من OptionButton التى تقوم بتحديد الاجابه اذا كانت True أو False و ربط هذه الاجابه باستدعاء داله أو بيانات قمت بتحديدها مسبقا و أمر الاستدعاء هذا هام جدا فى vba و يساعدك فى أختصار الكود بكتابته مره واحده ثم استدعاءه من اى مكان بكود واحد 0 ستقوم بادراج UserForm و سنعيد تسميته من خانه Name الى frm_Main اضافه OptionButton و سنسميه opt_True اضافه OptionButton و سنسميه opt_False اضاقه TextBox و سنسميه txt_Name اضافه مفتاح أو Button و سنسميه btn_Start مع ملاحظه ان اعاده التسميه هام جدا عند التعامل مع عدد كبير من المشاريع , و نقوم بكتابه اول ثلاثه احرف بخط صغير ثم _ ثم الاسم الذى تريده و من الافضل ان يكون معبر لاننا فى العاده ننسى مع كثره الاكواد 0 و سنقوم باضافه هذا الكود Private Sub UserForm_Activate() opt_True.Value = True txt_Name.Text = "Hi" End Sub هذا الكود يعمل تلقائيا عند تشغيل الفورم السطر الاول يجبر الفورم بتنشيط مفتاح True السطر الثانى بكتب فى TextBox كلمه Hi سنقوم كتابه كود الاستدعاء بمفتاح Start Private Sub btn_Start_Click() If opt_True = True Then MsgBox (txt_Name) Else MsgBox "You Did Not Select" End If End Sub الشرح اذا كانت مفتاح True نشيط قم باستدعاء ماهو موجود ب txt_Name و يمكنك تغيير ماشئت ب txt_Name اذا كانت مفتاح False نشيط قم باظهار رساله You Did Not Select مرفق ملف السلام عليكم True.rar
يحيى حسين قام بنشر مارس 12, 2009 قام بنشر مارس 12, 2009 أخي ابو هاجر مبارك الترقية و شكرا على جهوداتك و مداخلات رائعة من الاستاذ عامود و الاستاذ هادي و هذه المداخلات ستثري الموضوع و دمتم
عادل حنفي قام بنشر مارس 12, 2009 قام بنشر مارس 12, 2009 السلام عليكم اخي ابو هاجر بارك الله فيك و الف الف مبروك لك الترقيه ودائما الي الامام تحياتي
احمدزمان قام بنشر مارس 12, 2009 قام بنشر مارس 12, 2009 اخي ابو هاجر السلام عليكم و رحمة الله وبركاته الف مبروك الترقية تستحقها عن جدارة لهذا الموضوع المميز جدا
أبو هاجر المصري قام بنشر مارس 13, 2009 الكاتب قام بنشر مارس 13, 2009 السلام عليكم ورحمة الله وبركاته * الأخ amoudi ماشاء الله عليك من غيرك فعلا الومضوع ده يبقى ناقص .... جزاك الله خيرا على الاضافات الممتعة ، ومعانا دائما * الأخ الأستاذ هادي ... جزاك الله خيرا مش انا بقولها طبعا دول كل الأعضاء الي متابعين الموضوع شكرا لك وياريت تعليقاتك الجميلة وإضافاتك الممتعة على طول ان شاء الله * الأخ justice شكرا لك كثيرا ، وهذه المداخلات هي جزء لا يتجزأ من الموضوع بل ومكمل ليه بالفعل .. * الأخ aah_aah2008 جزاك الله خيرا ، وان شاء الله تشاركنا بآراءك وموضوعاتك الطيبة * الأخ أحمد يعقوب جزاك الله خيرا ، ومنتظرينك تمتعنا برضة بتعليقك على الموضوع الأخوة الأعزاء نستكمل سويا الجزء الرابع وهذا هو الدرس الثالث 4) المصفوفات ( Arrays ) - المصفوفة هي عبارة عن مجموعة من المتغيرات التي لها اسم مشترك ، على سبيل المثال نحن نشير إلى متغير محدد بعينه في مصفوفة من خلال اسم المصفوفة ورقم فهرس هذا المتغير في المصفوفة . - على سبيل المثال يمكنك تحديد مجموعة من 7 سلاسل متغيرة من البيانات ليمثلوا عدد الأيام في الأسبوع ، وإذا قمت بتسمية المصفوفة NumDays ، يمكنك الإشارة إلى اليوم الأول في الأسبوع ( NumDays(1) ) واليوم الثاني ( NumDays(2) ) .. وهكذا ** إعلان المصفوفة .. - قبل أن تتمكن من استخدام المصفوفة ، يجب عليك الإعلان عنها أولا مثل متغير في VBA بـ Dim أولا أو بالتصريح العام ، إفتراضيا فإن VBA يحدد القيمة ( 0 ) كأقل فهرس ، وبالتالي تحتاج إلى تحديد عدد العناصر بالمصفوفة عن طريق تحديد فهرس أول رقم وفهرس آخر رقم بالمصفوفة ، والمثال التالي يوضح كيفية الإعلان عن عدد الأيام في الأسبوع ... Dim NumDays(1 to 7) As Integer - عندما تعلن عن مصفوفة ، يمكنك أن تحدد فقط القيمة العليا .. - كما يفترض VBA أن القيمة الصغرى هي ( 0 ) ، والمثالين التاليين يعينان نفس عدد العناصر ( 100 ) .. Dim MyArray(0 to 99) As Integer Dim MyArray(99) As Integer - إذا كنت تريد من VBA أن يحدد القيمة ( 1 ) بأنها القيمة الصغرى في المصفوفة ، فإنه يجب عليك أن تضيف الكود التالي في قسم الإعلانات لديك .. Option Base 1 - وتم هنا افتراض القيمة ( 1 ) كقيمة صغرى للمصفوفة من الآن ، وتمثل المصفوفة أعلاه 99 عنصرا بعد هذا الكود . ** تحديد قيم مجموعة من العناصر في مصفوفة .. افترض أننا بصدد تحديد القيمة ( 5 ) للفهرس الثالث في مصفوفة اسمها ( MyArray ) سيكون الكود كالتالي .. MyArray(3) = 5 ** المصفوفات متعددة الأبعاد .. لقد ألقينا نظرة على المصفوفات ذات البعد الواحد ، كما أن VBA يتيح لك الحصول على ما يصل إلى 60 بعد ، المثال التالي يعلن ( 5 ) أعداد في مصفوفة ذات بعدين .. Dim MyArray(1 to 5, 1 to 5) As Integer - يمكنك التفكير في أن هذه المجموعة تحتل المصفوفة ( 5 x 5 ) ، وإذا كنا نريد إسناد القيمة ( 5 ) إلى الفهرس الذي موضعه ( الصف الثاني والعمود الخامس ) من المصفوفة فإننا نستخدم الكود التالي .. MyArray(2, 5) = 5 - وبعبارة أخرى ، تم تخزين القيمة المتغيرة ( 5 ) في ( الصف الثاني و العمود الخامس ) من المصفوفة ( MyArray ) - وللمصفوفات ثلاثية الأبعاد ، يتم التفكير فيها على أساس أنها مصفوفة مكعبة ، تصور مصفوفة مكونة من أكثر من ثلاث أبعاد ، في الحقيقة هي شيء غاية في الصعوبة ، ولكن لا تقلق من البعد الرابع وما بعده فثق تماما أنك لن تحتاجه . ** المصفوفات الديناميكية ... - حتى الآن فقد قمنا بالإعلان عن مصفوفات محددة العناصر ، ولكن إذا أردت الإعلان عن مصفوفة بدون تحديد عناصرها .. Dim MyArray() As Integer - وهذه هي الطريقة لعمل مصفوفة ديناميكية ، عن طريق وضع قوسين فارغين بعد اسم المصفوفة .. - ولتغيير حجم المصفوفة ، يجب عليك استخدام تعبير ( ReDim ) لتخبر الـ VBA كم عدد عناصر المصفوفة ، وفي أغلب الأحيان ، فإن عدد عناصر المصفوفة يتحدد من خلال تشغيل برنامجك ، وتعبير ( ReDim ) يمكن استخدامه أي عدد من المرات لتغيير حجم المصفوفة كلما احتجت ذلك . - على سبيل المثال ، لو كنت بحاجة إلى تغيير حجم مصفوفة إلى ( 10 * 10 ) .. ReDim MyArray(10,10) As Integer - الآن فإنك قمت بتغيير الحجم أو العناصر بمصفوفة ديناميكية ، وكذلك لتعرف جيدا أنه عند إعادة تعيين عناصر مصفوفة ديناميكية باستخدام ( ReDim ) فإنك تمحي كل القيم المخزنة حاليا في جميع العناصر .. - وسوف يتم مناقشة جزئية المصفوفات بشكل مفصل في فصل قادم بإذن الله ... ** معلش يا جماعة هو جزء بسيط لكنه مهم جدا ، والدرس القادم بإذن الله عن المدخلات والمخرجات في VBA والسلام عليكم ورحمة الله وبركاته 1
هادى محمد المامون سالم قام بنشر مارس 13, 2009 قام بنشر مارس 13, 2009 بسم الله الرحمن الرحيم و هذا مثال مايكروسوفت الذى تجده بHelp Example This example uses the Array function to return a Variant containing an array. Dim MyWeek, MyDay MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") ' Return values assume lower bound set to 1 (using Option Base ' statement). MyDay = MyWeek(2) ' MyDay contains "Tue". MyDay = MyWeek(4) ' MyDay contains "Thu ". وقد قمت بالتعديل عليه لاظهار ايام الاسبوع عن طريق Array بالكود التالى Sub DOIT() Dim MyWeek, MyDay MyWeek = Array("Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") For i = 0 To 6 MyDay = MyWeek(i) MsgBox (MyDay) Next i End Sub مع ملاحظه اننا قمن بمناداه ايام الاسبوع بعد تعريفها MyDay بوضعها بين قوسين مرفق ملف السلام عليكم Array.rar
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.