نطاق تحديد VBA | كيفية تحديد نطاق في Excel VBA؟

نطاق تحديد Excel VBA

بعد المواد الأساسية باستخدام VBA ، من المهم فهم كيفية العمل مع مجموعة من الخلايا في ورقة العمل. بمجرد أن تبدأ في تنفيذ الرموز عمليًا في معظم الأوقات ، فأنت بحاجة إلى العمل مع مجموعة من الخلايا. لذلك ، من المهم فهم كيفية العمل مع نطاق من الخلايا وأحد هذه المفاهيم هو VBA "Selection of Range". في هذه المقالة ، سنوضح لك كيفية العمل مع "نطاق التحديد" في Excel VBA.

الاختيار والمدى موضوعان مختلفان ولكن عندما نقول لتحديد النطاق أو اختيار النطاق ، يكون مفهومًا واحدًا. RANGE عبارة عن كائن ، و “Selection” خاصية و “Select” هي طريقة. يميل الناس إلى الخلط بين هذه المصطلحات ، فمن المهم معرفة الاختلافات بشكل عام.

كيفية تحديد نطاق في Excel VBA؟

يمكنك تنزيل قالب Excel لنطاق التحديد VBA هذا هنا - قالب Excel لنطاق تحديد VBA

مثال 1

على سبيل المثال ، افترض أنك تريد تحديد الخلية A1 في ورقة العمل ، ثم نحتاج أولاً إلى تحديد عنوان الخلية باستخدام كائن RANGE مثل أدناه.

رمز:

بعد ذكر الخلية التي نحتاج إلى تحديد وضع نقطة لرؤية قائمة IntelliSense المرتبطة بكائن RANGE.

تشكيل هذه المجموعة المتنوعة من القوائم يختار طريقة "التحديد".

رمز:

 النطاق الفرعي Range_Example1 () ("A1"). حدد End Sub 

الآن ، سيحدد هذا الرمز الخلية A1 في ورقة العمل النشطة.

إذا كنت ترغب في تحديد الخلية في أوراق العمل المختلفة ، فسنحتاج أولاً إلى تحديد ورقة العمل حسب اسمها. لتحديد ورقة العمل ، نحتاج إلى استخدام كائن "WORKSHEET" وإدخال اسم ورقة العمل بين علامتي اقتباس.

على سبيل المثال ، إذا كنت تريد تحديد الخلية A1 في ورقة العمل "ورقة البيانات" ، فقم أولاً بتحديد ورقة العمل كما هو موضح أدناه.

رمز:

 Sub Range_Example1 () أوراق عمل ("ورقة بيانات") End Sub 

ثم تابع الكود لتحديد ما يتعين علينا القيام به في هذه الورقة. في "ورقة البيانات" نحتاج إلى تحديد الخلية A1 ، لذلك سيكون الرمز هو RANGE ("A1"). حدد.

رمز:

 Sub Range_Example1 () Worksheets ("Data Sheet"). Range ("A1"). حدد End Sub 

عندما تحاول تنفيذ هذا الكود سوف نحصل على الخطأ أدناه.

والسبب في ذلك هو "لا يمكننا توفير كائن النطاق مباشرة وتحديد طريقة لكائن أوراق العمل".

أولاً ، نحتاج إلى تحديد ورقة عمل VBA أو تنشيطها ، ثم يمكننا القيام بكل الأشياء التي نريد القيام بها.

رمز:

 Sub Range_Example1 () Worksheets ("Data Sheet"). تنشيط النطاق ("A1"). حدد End Sub 

الآن سيؤدي هذا إلى تحديد الخلية A1 في ورقة العمل "ورقة البيانات".

مثال # 2 - العمل مع النطاق المحدد الحالي

التحديد شيء مختلف والعمل مع نطاق الخلايا المحدد بالفعل مختلف. افترض أنك تريد إدخال قيمة "Hello VBA" في الخلية A1 ، ثم يمكننا القيام بذلك بطريقتين.

أولاً يمكننا تمرير رمز VBA مباشرةً كـ RANGE (“A1”). القيمة = “Hello VBA”.

رمز:

 النطاق الفرعي Range_Example1 () ("A1"). القيمة = "Hello VBA" End Sub 

ما سيفعله هذا الرمز هو أنه سيؤدي فقط إلى إدراج القيمة "Hello VBA" في الخلية A1 بغض النظر عن الخلية المحددة حاليًا.

انظر إلى النتيجة أعلاه للكود. عندما ننفذ هذا الرمز ، فإنه قد أدخل القيمة "Hello VBA" على الرغم من أن الخلية المحددة حاليًا هي B2.

ثانيًا ، يمكننا إدخال القيمة في الخلية باستخدام خاصية "التحديد". لهذا أولاً ، نحتاج إلى تحديد الخلية يدويًا وتنفيذ الكود.

رمز:

 Sub Range_Example1 () Selection.Value = "Hello VBA" End Sub 

ما سيفعله هذا الرمز هو إدراج القيمة "Hello VBA" في الخلية المحددة حاليًا. للحصول على مثال ، انظر إلى مثال التنفيذ أدناه.

عندما قمت بتنفيذ الكود ، كانت الخلية المحددة الحالية الخاصة بي هي B2 وأدخلت الشفرة نفس القيمة إلى الخلية المحددة حاليًا.

الآن سأقوم بتحديد الخلية B3 وتنفيذها ، وهناك أيضًا سنحصل على نفس القيمة.

شيء آخر يمكننا القيام به مع خاصية "التحديد" هو أنه يمكننا إدخال قيمة إلى أكثر من خلية واحدة أيضًا. على سبيل المثال ، سأحدد نطاق الخلايا من A1 إلى B5 الآن.

الآن إذا قمت بتنفيذ الكود ، فسنحصل على القيمة "Hello VBA" لجميع الخلايا المحددة.

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

لكن في كائن التحديد ، لا يهم الخلية التي أنت فيها ، ستدرج القيمة المذكورة في جميع الخلايا المحددة.

أشياء يجب تذكرها هنا

  • لا يمكننا توفير طريقة التحديد مباشرة ضمن خاصية التحديد.
  • RANGE هو كائن والتحديد هو خاصية.
  • بدلاً من النطاق ، يمكننا استخدام خاصية CELLS.