بضائع

أمثلة على وحدات ماكرو Excel مكتوبة باستخدام VBA

تمت كتابة أمثلة ماكرو Excel البسيطة التالية باستخدام VBA 

وقت القراءة المقدر: 3 دقيقة

مثال VBA باستخدام Array

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

  • إعلانات متغيرة؛
  • المصفوفات الديناميكية
  • دورة Do Until;
  • الرجوع إلى الخلايا الموجودة في ورقة عمل Excel الحالية؛
  • وظيفة فبا Ubound مدمج (الذي يُرجع أعلى فهرس للصفيف).
' Sub procedure store values in Column A of the active Worksheet
' into an array
Sub GetCellValues()
Dim iRow As Integer            ' stores the current row number
Dim dCellValues() As Double  ' array to store the cell values
iRow = 1
ReDim dCellValues(1 To 10)
' Do Until loop to extract the value of each cell in column A
' of the active Worksheet, as long as the cell is not blank
Do Until IsEmpty(Cells(iRow, 1))
   ' Check that the dCellValues array is big enough
   ' If not, use ReDim to increase the size of the array by 10
   If UBound(dCellValues) < iRow Then
      ReDim Preserve dCellValues(1 To iRow + 9)
   End If
   ' Store the current cell in the CellValues array
   dCellValues(iRow) = Cells(iRow, 1).Value
   iRow = iRow + 1
Loop
End Sub

يقوم الإجراء بتخزين القيم الموجودة في العمود A من ورقة العمل النشطة في مصفوفة، لاحظ ما يلي:

  • الدورة Do Until يستخرج قيم كل خلية في العمود A من ورقة العمل النشطة، متجاهلاً الخلايا الفارغة
  • الحالة "If UBound(dCellValues) < iRow" يتحقق من أن مصفوفة dCellValues ​​كبيرة بما يكفي للاحتفاظ بالمعلومات، وإذا لم تكن كذلك، فاستخدم ReDim لزيادة حجم المصفوفة بمقدار 10
  • وأخيراً التعليم​​dCellValues(iRow) = Cells(iRow, 1).Value" يخزن الخلية الحالية في صفيف CellValues

مثال VBA مع العمليات الرياضية

يقرأ الإجراء الفرعي التالي القيم من العمود A من ورقة العمل المسماة "الورقة2" ويقوم بإجراء عمليات حسابية على القيم. تتم طباعة القيم الناتجة في العمود A من ورقة العمل النشطة الحالية.

يوضح هذا الماكرو:

النشرة الإخبارية
لا تفوّت أهم أخبار الابتكار. قم بالتسجيل لتلقيهم عن طريق البريد الإلكتروني.
  • إعلانات متغيرة؛
  • كائنات Excel (على وجه التحديد، استخدام الكلمة الأساسية Set وكيفية الوصول إلى كائن "الأعمدة" من كائن "جداول البيانات")؛
  • دورة Do Until;
  • الوصول إلى أوراق العمل ونطاقات الخلايا في مصنف Excel الحالي.
' Sub procedure to loop through the values in Column A of the Worksheet
' "Sheet2", perform arithmetic operations on each value, and write the
' result into Column A of the current Active Worksheet ("Sheet1")
Sub Transfer_ColA()
Dim i As Integer
Dim Col As Range
Dim dVal As Double
' Set the variable 'Col' to be Column A of Sheet 2
Set Col = Sheets("Sheet2").Columns("A")
i = 1
' Loop through each cell of the column 'Col' until
' a blank cell is encountered
Do Until IsEmpty(Col.Cells(i))
   ' Apply arithmetic operations to the value of the current cell
   dVal = Col.Cells(i).Value * 2 + 1
   ' The command below copies the result into Column A
   ' of the current Active Worksheet - no need to specify
   ' the Worksheet name as it is the active Worksheet.
   Cells(i, 1) = dVal
   i = i + 1
Loop
End Sub

مثال VBA مع تسجيل تاريخ التعديل

لنكتب ماكرو VBA بسيطًا يتم تشغيله عند تحديث خلية في نطاق معين من ورقتنا. لنفترض أنك تريد تتبع التغييرات في العمود B (من B4 إلى B11) وتسجيل تاريخ ووقت التغيير في العمود A.
دعونا نمضي قدما على هذا النحو:

  • في علامة التبويب Developer انقر على الخيار "Visual Basic" لفتح محرر VBA.
  • في محرر VBA، انقر نقرًا مزدوجًا فوق محرر التعليمات البرمجية المتعلق بالورقة2.
  • اختر ورقة عمل من علامة التبويب اليمنى (أو اليسرى) وحدد خيار التغيير.
  • إضافة كود VBA:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
        Target.Range("A1:A1").Value = Now
    End If
End Sub

احفظ المصنف مع تمكين وحدات الماكرو (على سبيل المثال، كملف .xlsm).


الآن، في كل مرة نقوم فيها بتحديث خلية في العمود B (من الصف 1 إلى الصف 10)، ستعرض الخلية الموجودة في العمود A التاريخ والوقت الحاليين تلقائيًا.

Ercole Palmeri

النشرة الإخبارية
لا تفوّت أهم أخبار الابتكار. قم بالتسجيل لتلقيهم عن طريق البريد الإلكتروني.

المقالات الأخيرة

يتميز Veeam بالدعم الأكثر شمولاً لبرامج الفدية، بدءًا من الحماية وحتى الاستجابة والاسترداد

سوف تستمر شركة Coveware by Veeam في تقديم خدمات الاستجابة لحوادث الابتزاز السيبراني. ستوفر Coveware إمكانات الطب الشرعي والمعالجة...

أبريل 23 2024

الثورة الخضراء والرقمية: كيف تعمل الصيانة التنبؤية على تغيير صناعة النفط والغاز

تُحدث الصيانة التنبؤية ثورة في قطاع النفط والغاز، من خلال اتباع نهج مبتكر واستباقي لإدارة المحطات.

أبريل 22 2024

منظم مكافحة الاحتكار في المملكة المتحدة يثير إنذار BigTech بشأن GenAI

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

أبريل 18 2024

كازا جرين: ثورة الطاقة من أجل مستقبل مستدام في إيطاليا

اختتم مرسوم "البيوت الخضراء"، الذي صاغه الاتحاد الأوروبي لتعزيز كفاءة استخدام الطاقة في المباني، عمليته التشريعية مع…

أبريل 18 2024

اقرأ الابتكار بلغتك

النشرة الإخبارية
لا تفوّت أهم أخبار الابتكار. قم بالتسجيل لتلقيهم عن طريق البريد الإلكتروني.

تابعنا