Vba: كيفية تشغيل ماكرو عندما تتغير قيمة الخلية
يمكنك استخدام بناء الجملة التالي في VBA لتشغيل ماكرو عندما تتغير قيمة خلية معينة:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = " $A$1 " Then
Call MultiplyMacro
End If
End Sub
سيؤدي هذا المثال بالتحديد إلى تشغيل الماكرو المسمى MultiplyMacro عندما تتغير قيمة الخلية A1 .
يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.
مثال: قم بتشغيل ماكرو عندما تتغير قيمة الخلية باستخدام VBA
لنفترض أننا أنشأنا الماكرو التالي المسمى MultiplyMacro الذي يقوم بضرب القيم في الخلايا A1 و B1 ويعرض النتائج في الخلية C1 :
SubMultiplyMacro ()
Range(" C1 ") = Range(" A1 ") * Range(" B1 ")
End Sub
على سبيل المثال، لنفترض أن لدينا القيمة 12 في الخلية A1 والقيمة 3 في الخلية B1 .
إذا قمنا بتشغيل هذا الماكرو، فسنحصل على النتيجة التالية:
لنفترض الآن أننا نريد تشغيل هذا الماكرو تلقائيًا كلما تغيرت قيمة الخلية A1 .
للقيام بذلك، يمكننا النقر بزر الماوس الأيمن على اسم الورقة ثم النقر فوق “إظهار الرمز” :
في نافذة تحرير الكود التي تظهر، يمكنك لصق الكود التالي:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = " $A$1 " Then
Call MultiplyMacro
End If
End Sub
توضح لقطة الشاشة التالية كيفية القيام بذلك عمليًا:
يمكننا بعد ذلك إغلاق محرر VB.
الآن، عندما نقوم بتغيير القيمة في الخلية A1 ، سيتم تشغيل الماكرو المسمى MultiplyMacro تلقائيًا وإجراء الضرب باستخدام القيمة الجديدة في الخلية A1 .
على سبيل المثال، لنفترض أننا قمنا بتغيير قيمة الخلية A1 إلى 10 . بمجرد تغيير القيمة والضغط على Enter ، سيتم تشغيل الماكرو:
يقوم الماكرو بضرب 10 في 3 ويعرض النتيجة في الخلية C2 .
ملاحظة : إذا كنت تريد تشغيل الماكرو عندما تتغير خلية في نطاق معين، يمكنك استخدام بناء الجملة التالي:
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range(" A1:B1 ")) Is Nothing Then
Call MultiplyMacro
End If
End Sub
سيؤدي هذا إلى تشغيل الماكرو المسمى MultiplyMacro في حالة تغيير أي خلية في النطاق A1:B1 .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في VBA:
فبا: كيفية حساب عدد الأوراق في المصنف
فبا: كيفية استخراج البيانات من مصنف آخر
فبا: كيفية إضافة أوراق جديدة