VBA ThisWorkbook | كيفية استخدام خاصية ThisWorkbook في Excel VBA؟

Excel VBA ThisWorkbook

يعني VBA ThisWorkbook المصنف الذي نكتب فيه كود Excel. على سبيل المثال ، إذا كنت تعمل في المصنف المسمى "Sales 2019.xlsx" ، فعادة ما نشير إلى المصنف مثل هذا.

مصنفات ("Sales 2019.xlsx"). التفعيل

سيقوم الكود بتنشيط المصنف المسمى "Sales 2019.xlsx".

بدلاً من كتابة مثل هذا ، يمكننا ببساطة كتابة رمز VBA أدناه.

ThisWorkbook.Activate '

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

أنا متأكد من أنك يجب أن تكون قد شاهدت أيضًا كلمة "Active Workbook" عندما تشير إلى رمز الآخرين. هذه أيضًا واحدة من الكلمات المستخدمة غالبًا في الترميز. سنرى ما هي الاختلافات بين هاتين الكلمتين في الأساس.

العمل مع ThisWorkbook في Excel VBA

تعتبر الكلمة المرجعية "ThisWorkbook" أكثر موثوقية من مؤهل كائن المصنفات. أحد الميول البشرية هو كتابة اسم المصنف بشكل خاطئ مما يؤدي إلى إلقاء رسالة خطأ.

سبب آخر مهم يجعل VBA ThisWorkbook أكثر موثوقية لأنه في حالة تغيير اسم المصنف نحتاج إلى تغيير الكود لأننا استخدمنا كلمة "ThisWorkbook".

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

يمكنك تنزيل قالب Excel هذا VBA ThisWorkbook هنا - قالب Excel VBA ThisWorkbook

مثال 1

سنرى بعض الأمثلة حيث يمكننا استخدام كلمة ThisWorkbook في excel VBA. سوف يقوم الكود التالي بطباعة اسم المصنف.

رمز:

 Sub TWB_Example1 () Dim WBName As String WBName = ThisWorkbook.Name MsgBox WBName End Sub 

عند تشغيل الرمز يدويًا أو استخدام المفتاح F5 ، سيُظهر الرمز أعلاه اسم المصنف في مربع الرسالة في VBA.

المثال رقم 2

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

رمز:

 Sub TWB_Example2 () ThisWorkbook.Activate ThisWorkbook.Worksheets ("Sheet1"). تنشيط ThisWorkbook.Save ThisWorkbook.Close ThisWorkbook.SaveAs End Sub 

استخدم الكود أعلاه "ThisWorkbook" في كل سطر من الكود. ما مدى صعوبة كتابة الكلمة في كل مرة. لذا ، يمكننا تصغير ذلك باستخدام المتغيرات.

الآن ، انظر إلى الكود أدناه مع المتغير.

رمز:

 Sub TWB_Example2 () Dim Wb As Workbook Set Wb = ThisWorkbook Wb.Activate Wb.Worksheets ("Sheet1"). تنشيط Wb.Save Wb.Close Wb.SaveAs End Sub 

تبدو جميلة أليس كذلك ؟؟

اسمحوا لي أن أشرح الكود لكم يا رفاق.

أولا لقد أعلنت المتغير ككائن مصنف.

Dim Wb كمصنف

نظرًا لأن هذا متغير كائن ، نحتاج إلى تعيين المرجع إلى المصنف المحدد. لذا فقد استخدمت مرجع "ThisWorkbook".

تعيين Wb = ThisWorkbook

الآن تمت الإشارة إلى المتغير "Wb" في المصنف حيث نكتب الكود في الوقت الحالي. من الآن فصاعدًا في الإجراء ، لا نحتاج إلى استخدام كلمة "ThisWorkbook" بدلاً من ذلك يمكننا استخدام المتغير "Wb"

المصنف النشط مقابل ThisWorkbook في Excel VBA

كما قلت في بداية المقال ، يستخدم العديد من المبرمجين الكلمات Active Workbook & ThisWorkbook في كثير من الأحيان في ترميز VBA الخاص بهم. ليس من السهل فهم هذين الأمرين كقارئ أو متعلم جديد. لذا اسمحوا لي أن أشرح لكم بعض الاختلافات.

الفرق رقم 1: المعنى

  • المصنف النشط: المصنف النشط ليس بالضرورة المصنف الذي نكتب فيه الكود في الوقت الحالي. إذا كان لديك العديد من المصنفات المفتوحة وكان المصنف الذي يظهر على الشاشة يعتبر مصنفًا نشطًا .
  • ThisWorkbook: ThisWorkbook هو دائمًا المصنف الذي نكتب فيه الكود في الوقت الحالي.

الفرق 2: فرص الخطأ

  • المصنف النشط: قد يؤدي استخدام Active في الترميز إلى العديد من الأخطاء والارتباك لأننا لا نعرف أبدًا المصنف النشط ما لم نذكر المصنف المراد تنشيطه على وجه التحديد قبل استخدام كلمة Active Workbook.
  • ThisWorkbook: لا يمكن أن يحدث خطأ في ThisWorkbook لأنه لا يهم المصنف النشط ، فهو يأخذ دائمًا مرجع المصنف حيث نكتب الرمز.