اعلن هنا
أكاديمية الصقر للتدريب
أعلن هنا
أعلن هنا
صفحتنا على الفيس بوك
أعلن هنا



أهلا وسهلا بك زائرنا الكريم في أكاديمية الصقر للتدريب، لكي تتمكن من المشاركة ومشاهدة جميع أقسام المنتدى وكافة الميزات ، يجب عليك إنشاء حساب جديد بالتسجيل بالضغط هنا أو تسجيل الدخول اضغط هنا إذا كنت عضواً .





الحلقة السادسة المتغيرات الجزء الثانى

السلام عليكم ورحمة الله وبركاته معكم الأستاذ ياسر خليل فى الحلقة الخامسة من الـVBA ..................................... ..



23-02-2018 04:21 مساء
Eslam Abdullah
menu_open
خبير معتمد
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1050
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 2
يتابعهم : 3
يتابعونه : 50
قوة السمعة : 6137
الاعجاب : 1759
 offline 

السلام عليكم ورحمة الله وبركاته
معكم الأستاذ
ياسر خليل
فى الحلقة الخامسة من الـVBA

.....................................................................................................
أهلا بكم إخواني الأحباب مع حلقة جديدة ، والحلقة دي استكمال لحلقة المتغيرات ..
 
كنا اتكلمنا عن نوعين من المتغيرين باستفاضة (3 مرات على ما الكلمة اتكتبت معايا ) ..اتكلمنا عن النوع Integer ودا بيكون للأرقام الصحيحة ، والنوع String ودا بيكون للقيم النصية.
 
نكمل رغي عن المتغيرات عشان نخلص منها ونخلص عليها ..
 
بداية أحب أعرفكم بدالة في VBA اسمها CINT ..الدالة دي وظيفتها إنها بتحول أي قيمة لعدد صحيح من النوع Integer (ودي اختصار Convert Integer..الحرف الأول من Convert وأول 3 حروف من Integer) >>
 
الكلام مش هيفيد بقدر التطبيق :: نجرب المثال التالي

Dim LValue As Integer
LValue = CINT(8.45)
MsgBox LValue

لو نفذنا الكود هنلاقي إن القيمة أصبحت 8 .. طيب نغير الرقم إلى 8.5 ونشوف النتيجة بردو نفس القيمة 8 .. طيب نغير الرقم ونخليه 8.6 خلي بالك متتوقعش 8 ، القيمة بقت 9 (تسعى في الخير)
 

الملاحظات المستفادة : إن الكسر لو أقل من أو يساوي 0.5 .. القيمة بتتقرب لتحت ، أما لو الكسر أكبر من 0.5 يبقا يتقرب لفوق ..(يعني الدالة دي ممكن نستفيد منها في أمور تانية .. زي التقريب)
 
جرب القيمة 8.50001 .. جربتو : أكيد لا نازلين قراية وخلاص .. اللي جرب هيتأكد من إن : لو هفوة مفيش تفاهم!!
 
نراجع مرة تانية المتغير Integer بمثال عملي :

    Dim nRowCount As Integer
    nRowCount = Rows.Count
    MsgBox nRowCount

أولاً عايزين نتعلم شيء مهم جداً وإحنا لسه في البداية : إننا لما نيجي نسمي متغير يا ريت يكون الاسم وصفي (يعني كل المتغيرات عندي هسميها وصفي ..شكلك بتعزه يا أستاذ ...طيب ما نسميه شوقي أو مراد ..لازم وصفي ) .. يا جدعان انتو فهمتوني غلط أنا أقصد بكلمة وصفي إنه يوصف الاسم بشكل كويس .. يعني مثلا نشوف نوع المتغير نلاقيه Integer فنقوم في أول الاسم نحط مثلا n عشان يوضح لأي حد يقرا الكود إنه Interger ، وبعد الحرف الدلالي n نكتب اسم للمتغير يكون دال عليه .. أنا مثلا هعد الصفوف فاقوم أكتب RowCount .. يبقا في النهاية اسم المتغير nRowCount ...طبعا اللي بقوله ده مش الزامي ..دي عادة حسنة بيتبعها المبرمجون المحترفون ..مش الاقي ناس تكتب mghy حاجة كدا ملهاش دلالة على اسم المتغير ...!!

السطر التاني وضعنا قيمة للمتغير وهي Rows.Count وطبعا كلمة Count دي m*ethod بمعنى (عد) ، ودي وظيفتها إنها تعد بس تعد ايه .. تعد الصفوف Rows


واحد يقولي طيب ممكن أعد الأعمدة أقوله أيوا Columns.Count مفيش مشكلة .. واحد يقولي يعني ممكن أعد الخلايا في نطاق معين زي A1:C5 ، بردو مفيش مشكلة
Range(Cells(1, 1), Cells(5, 3)).Count
 

المهم خلينا في السطر التالت (محدش يخرجني برا الموضوع)
 
مش محتاج شرح ..إظهار قيمة عدد الصفوف في رسالة
ننفذ الكود (رسالة خطأ .. ميهمكش من الفشل .!! )

MzQ1NDE4MQ3232872876048
واحد هيسألني طيب الغلطة فين ..كل حاجة زي الفل .. المحرر دا بيستعبط ! أنا مش هشتغل على المحرر دا تاني سلااام ..
 
هرد عليه وأقوله اصبر بس كل الحكاية إننا بنتعامل بقواعد وقوانين ..أنا لما عرفت المتغير حددت نوعه بـ Integer ودا بيكون للأرقام الصحيحة ما بين

32, 767

والقيمة السالبة
-32, 768

يعني ببساطة بيتعامل مع الأرقام دي وبس ..ميقدرش يتعامل مع أكبر من كدا ..
 
طيب ايه الحل ؟ ايه البديل ؟ البديل المتغير Long دا بيتعامل مع الأرقام الصحيحة بردو ، بس ما بين

2,147,483,647

-2,147,483,648

طيب نرجع للكود بتاعنا ..عدد الصفوف في إكسيل 2007 مثلا يساوي 1048576 ، والمتغير Integer قلنا إن صحته على أده ، فيقوم المتغير Long ييجي ويشيل..
 
يبقا كل اللي هنغيره كلمة واحدة عشان الامور تمشي تمام (نشيل Integer ونحط Long)
 
يعني ممكن الكود يكون بالشكل ده (لاحظوا أنا هغير البادئة في اسم المتغير إلى L اختصار Long)

    Dim LRowCount As Long
    LRowCount = Rows.Count
    MsgBox LRowCount

بكدا نكون اتعرفنا على Integer و Long في حالة التعامل مع الأعداد الصحيحة.
 
ننتقل لجزئية جديدة .. التعامل مع الأرقام اللي فيها كسور عشرية..
مش هنطول في الكلام ، هناخد باختصار مثال عملي عشان نفهم الدنيا ماشية إزاي

    Dim FloatingPoint As Single
    FloatingPoint = 10 / 3
    MsgBox FloatingPoint

طيب نغير كلمة Single بكلمة Double ونلاحظ الفرق..!!
 
مش هشرح الفرق لكن هقول إن اللي فهم الفرق بين Integer و Long ، هيفهم الفرق بين Single و Double ...
 

اسلام رفع ايده وقالي لأ يا باشا اشرحها بردو (حاضر يا عم اسلام اسلام هنشرحها عشان نأكد المعلومة بس مش أكتر )
 
لما استعملنا النوع Single نلاحظ إن عدد الأرقام العشرية 6 بس ، أما Double فنلاقي إن اللي على يمين العلامة 14 رقم (جرب الكود مرة كدا ومرة كدا وعد بنفسك (فيه ناس هتكسل))
 
نقطع على الجماعة المدرسين اللي بدوا رياضيات ، ونقول إن مساحة الدائرة = ط نق2 ، والله مش عارف إذا كان صح ولا غلط
 
عموما القيمة ط = 22/7 ، ودي موجودة في الإكسيل باسم Pi ، يعني لو كتبنا في خلية

=PI()

هيديني قيمة الـ ط ... المهم نستفيد في المثال التالي معلومة جديدة (إننا ممكن سنتخدم بعض الدوال الموجودة في الإكسيل ونطبقها في الـ VBA)
Dim FloatingPoint As Single
FloatingPoint = WorksheetFunction.Pi
MsgBox FloatingPoint

نخلي بالنا إننا وضعنا قيمة للمتغير واستخدمنا WorksheetFunction عشان أقول لمحرر الأكواد إننا هنستخدم دالة ، وبعدين نقطة Period وبعدين اسم الدالة هنا Pi ومفيش أقواس (دا الاختلاف ..لما استخدمناها في ورقة العمل كان لازم أقواس أما هنا فلا يتم استخدامها ..
 
نجرب مرة المتغير Single ومرة المتغير Double ..(أي خدمة يا اسلام اسلام .. منستغناش عن خدماتك يا مستر ياسر ياسر )
 
نكمل كلام عن المتغيرات عشان نخلص منها :
 
نتكلم عن المتغير التقيل Variant ودا بنستخدمه لما نكون مش عارفين نحدد القيمة هل هي رقم ولا نص ولا كائن Object ولا ولا (ولى زمن الجهل وأقبل زمن التعلم) .. فبنستخدمها ..بس نخلي بالنا إنها بتستهلك مساحة من الذاكرة فكثرة استخدامها بتخلي التعامل مع الأكواد يكون بطيء ..
 
المتغير اللذيذ Boolean ودا يا أبيض يا أسود .. يا صح يا غلط .. يا True يا False .. يا 1 يا صفر
 
بتكون القيمة المخرجة إحدى قميتين فقط

Dim balsaqrAs Boolean
MsgBox balsaqr

هنا حددنا نوع المتغير بـ Boolean .. لما ننفذ الكود هنلاقي رسالة فيها False (نفهم من كدا إن الاختيار الافتراضي هو False) يعني مش زينا بنفترض حسن النية ، لا دا ماشي بمبدأ المتهم مجرم حتى تثبت براءته ، فهنا وضع القيمة False للمتغير ..
 
نجرب نضع القيمة صفر

Dim balsaqr As Boolean
balsaqr = 0
MsgBox balsaqr

هنلاقي نفس الناتج اللي فات False ..!!
 
نغير شوية ونخلي القيمة أي قيمة غير الصفر ، هتلاقي الناتج True
 
فيه متغيرات تانية زي Date للتعامل مع التواريخ ، والمتغير Currency للتعامل مع العملات
 
وبكدا كفاية أوي على المتغيرات .. المهم في الموضوع الفكرة تكون وصلت .. أنا بس مجرد واحد معاه مفاتيح ..هديكم نسخة منها عشان تعرفوا تفتحوا الباب يا أحباب)


كان معكم صانع المفاتيح Keys Maker أخوكم أبو البراء
 
وإلى لقاء في حلقة جديدة من حلقات افتح الباب واهرب من الشباك ..

 
81 دمتم بود .. تقبلوا حبي وأشواقي وتحياتي القلبية 81
 
 


أثارت هذه المشاركة إعجاب: YasserKhalil، عبدالجيد، mahmoud ayad،





23-02-2018 04:42 مساء
مشاهدة مشاركة منفردة [1]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 4319
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 11
يتابعهم : 0
يتابعونه : 308
قوة السمعة : 12328
الاعجاب : 4494
 offline 
look/images/icons/i1.gif الحلقة السادسة المتغيرات الجزء الثانى
بارك الله فيك أخي الحبيب إسلام ومشكور على المجهود الرائع ، تسلم يا غالي

أثارت هذه المشاركة إعجاب: Eslam Abdullah، عبدالجيد، رمضان بكري،




23-02-2018 05:02 مساء
مشاهدة مشاركة منفردة [2]
Eslam Abdullah
menu_open
خبير معتمد
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1050
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 2
يتابعهم : 3
يتابعونه : 50
قوة السمعة : 6137
الاعجاب : 1759
 offline 
look/images/icons/i1.gif الحلقة السادسة المتغيرات الجزء الثانى
وبارك الله فيك استاذى الحبيب على الشرح الوافى والذى يعد كنز من كنوز الاكسل

أثارت هذه المشاركة إعجاب: YasserKhalil، عبدالجيد،




23-02-2018 07:09 مساء
مشاهدة مشاركة منفردة [3]
عبدالجيد
menu_open
عضو محترف
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 26-08-2017
رقم العضوية : 194
المشاركات : 328
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 15-2-1986
يتابعهم : 101
يتابعونه : 22
قوة السمعة : 2261
الاعجاب : 558
موقعي : زيارة موقعي
 offline 
look/images/icons/i1.gif الحلقة السادسة المتغيرات الجزء الثانى
ايه دا المتغيرات دى كلها اتعلمتها فى لغة الجافا وقالو كمان ان المتغيرات بتنطبق على معظم لغات البرمجة
بارك الله فيكم

أثارت هذه المشاركة إعجاب: Eslam Abdullah، YasserKhalil،




23-02-2018 09:07 مساء
مشاهدة مشاركة منفردة [4]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 4319
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 11
يتابعهم : 0
يتابعونه : 308
قوة السمعة : 12328
الاعجاب : 4494
 offline 
look/images/icons/i1.gif الحلقة السادسة المتغيرات الجزء الثانى
بالفعل أخي الحبيب عبد الجيد يوجد قواسم كثيرة مشتركة بين لغات البرمجة المختلفة .. الفكر واحد والنهج مختلف

أثارت هذه المشاركة إعجاب: عبدالجيد،




15-05-2018 03:02 مساء
مشاهدة مشاركة منفردة [5]
mahmoud ayad
menu_open
عضو فعال
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 15-03-2018
رقم العضوية : 4874
المشاركات : 104
الجنس : ذكر
تاريخ الميلاد : 29-5-1982
يتابعهم : 3
يتابعونه : 2
قوة السمعة : 238
الاعجاب : 103
 offline 
look/images/icons/i1.gif الحلقة السادسة المتغيرات الجزء الثانى
كنز بجد هذه الدروس بارك الله فيكم .....







الكلمات الدلالية
الحلقة ، السادسة ، Excel ،


 







اخلاء مسئولية: يخلى منتدى أكاديمية الصقر للتدريب مسئوليته عن اى مواضيع او مشاركات تندرج داخل الموقع ويحثكم على التواصل معنا ان كانت هناك اى إنتهاكات تتضمن اى انتهاك لحقوق الملكية الفكرية او الادبية لاى جهة - بالتواصل معنا من خلال نموذج مراسلة الإدارة .وسيتم اتخاذ الاجراءات اللازمة.
سياسة النشر: التعليقات المنشورة لا تعبر عن رأي منتدى أكاديمية الصقر للتدريب ولا نتحمل أي مسؤولية قانونية حيال ذلك ويتحمل كاتبها مسؤولية النشر.



الساعة الآن 10:52 صباحا

أعلن هنا
أعلن هنا
أعلن هنا