amir501 قام بنشر أغسطس 8, 2010 قام بنشر أغسطس 8, 2010 اخواني كل عام وانتم بخير واسمحو لي ان اهنئكم والامة الاسلامية بقدوم شهر الخير والمحبة جعله الله شهرا مباركا طيبا لكم ولعائلاتكم ولاحبتكم...ولاخواننا ادارة واعظاء وزروار هذا المنتدى .... هذا الكود كما هو واضح لايقاف عملية النسخ والقص والصق .....هل يتكرم احد اخواننا بشرح السطر الاول من الكود اي من بعد كلمة برايفت وبالاخص كلمة (ByVal Target As Range) وماذا يحدث لو قمنا بالغائها او قمنا بتغيرها ..ولكم جزيل الشكر Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.CutCopyMode = False Application.CellDragAndDrop = False End Sub
ياسر خليل أبو البراء قام بنشر أغسطس 9, 2010 قام بنشر أغسطس 9, 2010 أخي عامر السطر الأول المبدوء بكلمة Sub تعني إجراء ويتم تنفيذ هذا الإجراء مع الحدث SelectionChange أي تغيير التحديد بمعنى آخر أنت تقف في الخلية A1 ثم عند الضغط على Enter تكون بذلك قد غيرت مكان الخلية المحددة من A1 إلى A2 فيتم تنفيذ الكود أما ما بين الأقواس فتعريف بالمتغير Target أي الخلية المستهدفة ويتم التعامل مع هذا النوع من المتغيرات على أنه من النوع Range لأنه يعد نطاق السطر الثاني يقوم بإالغاء الحافظة بحيث لو عملت نسخ أوقص وجيت تلصق حتلاقي الأمر Paste غير نشط لإن بالسطر ده إنت كدا بتلغي الحافظة وبتمسح أي محتويات بداخلها أما السطر الثالث فواضح أنه يلغي عملية السحب بمقبض التعبئة والسطر الرابع (بيفكرني بشعبان عبد الرحيم لما ييجي يقفل الأغنية بتاعته بيقفلها بكلمة مشهورة "بس خلاص") هو السطر ده معناه بس خلاص (خلاص الكلام يا حاج عامر)
amir501 قام بنشر أغسطس 9, 2010 الكاتب قام بنشر أغسطس 9, 2010 أخي عامر السطر الأول المبدوء بكلمة Sub تعني إجراء ويتم تنفيذ هذا الإجراء مع الحدث SelectionChange أي تغيير التحديد بمعنى آخر أنت تقف في الخلية A1 ثم عند الضغط على Enter تكون بذلك قد غيرت مكان الخلية المحددة من A1 إلى A2 فيتم تنفيذ الكود أما ما بين الأقواس فتعريف بالمتغير Target أي الخلية المستهدفة ويتم التعامل مع هذا النوع من المتغيرات على أنه من النوع Range لأنه يعد نطاق السطر الثاني يقوم بإالغاء الحافظة بحيث لو عملت نسخ أوقص وجيت تلصق حتلاقي الأمر Paste غير نشط لإن بالسطر ده إنت كدا بتلغي الحافظة وبتمسح أي محتويات بداخلها أما السطر الثالث فواضح أنه يلغي عملية السحب بمقبض التعبئة والسطر الرابع (بيفكرني بشعبان عبد الرحيم لما ييجي يقفل الأغنية بتاعته بيقفلها بكلمة مشهورة "بس خلاص") هو السطر ده معناه بس خلاص (خلاص الكلام يا حاج عامر) الله ينور ياعم ياسر ...اشكرك على هذا الشرح لكن اخي ياسر انا اقصد (ByVal Target As Range) وتحديدا (ByVal) ماذا تعني وماذا يحدث لو قمنا بالغائها او قمنا بتغيرها ..ولكم جزيل الشكر
عبد الفتاح كيرة قام بنشر أغسطس 13, 2010 قام بنشر أغسطس 13, 2010 منقول في هذا الدرس سنتعرف على الفرق طرق تمرير البيانات بين الاجراءت و التي تتمثل في الأساس في طريقتين : -التمرير بالقيمة By Value باستخدام ByVal. -التمرير بالمرجع By Refrence باستخدام ByRef. عند تمرير قيمة إلى إجراء ما يوجد 4 حالات يمكن أن تصادفنا: 1/ أن يكون المتغير المرسل من النوع ذو القيمة value Type و يكون الاجراء يستقبل بالقيمة ByVal. 2/ أن يكون المتغير المرسل من النوع المرجعي Refrence Type و يكون الاجراء يستقبل بالقيمة ByVal. 3/ أن يكون المتغير المرسل من النوع ذو القيمة value Type و يكون الاجراء يستقبل بالمرجعByRef. 4/ أن يكون المتغير المرسل من النوع المرجعي Refrence Type و يكون الاجراء يستقبل بالمرجع ByRef. قبل شرح الفرق بين هذه الحالات الأربع يجب أن تعرف أنني عندما أتحدث عن الأنواع ذات القيمة فإني أقصد الأنواع المعرفة من سجلات Structures باستثناء الأنواع الأساسية Primitiv Types (Integer,Double...)، صحيح أنها من الأنواع ذات القيمة إلاّ أنها تختلف قليلا عن الأنواع المعرفة من Structures في ما يخص تمرير البيانات بين الاجراءت. أما المتغيرات المرجعية فأقصد بها كل المتغيرات المعرفة من الفئات Classes. 1/تمرير متغير من النوع ذو القيمة إالى إجراء يستقبل بالقيمة: في هذه الحالة يقوم المترجم بنسخ قيمة المتغير المرسل و التعامل مع هذه النسخة الجديدة دون أن يغير شيئا في المتغير الاصلي. 2/تمرير متغير من النوع المرجعي إلى إجراء يستقبل بالقيمة: في هذه الحالة يقوم المترجم بانشاء مؤشر جديد في القسم Heap يشير إلى نفس الكائن الذي يشير إليه متغير المرسل أي يقوم بانشاء نسخة من المؤشر و ليس الكائن.إذا جعلنا هذا المؤشر الجديد يشير إلى كائن آخر فإن المتغير الأصلي لن يتأثر بهذا بل سيبقى مشيرا إلى نفس الكائن.لكن الاجراء بإمكانه تغيير قيمة الكائن. الخلاصة: يمكن للاجراء تغيير قيمة الكائن لكن لا يمكنه تغيير الكائن الذي يشير إليه المتغير. 3/تمرير متغير من النوع ذو القيمة إلى إجراء يستقبل بالمرجع: في هذه الحالة يقوم المترجم بانشاء مؤشر يشير الى الكائن المرسل و يتعامل مع هذا الكائن من خلال هذا المؤشر و ليس مباشرة كما الحال عادة مع المتغيرات ذوات القيمة Value Types. و هنا يحدث ما يسمى بالصندقة Boxing و هي عملية اسناد متغير من النوع ذو القيمة إلى متغير مرجعي و هي عملية بطيئة و يجب تفاديها كل ما أمكن. 4/تمرير متغير من النوع المرجعي إلى اجراء يستقبل بالمرجع: هنا لا يقوم المترجم بانشاء نسخة من المؤشر إنما يقوم يتعامل مباشرة مع المؤشر المرسل و بذلك يمكنه ليس فقط تغيير قيم الكائن المرسل اليه إنما أيضا يمكنه جعله يشير إلى كائن آخر. أرجو أن تكون الصورة قد اتضحت و من وجد خطأ فلا يبخل بتصحيحه.
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.