وقت القراءة المقدر: 3 دقيقة
يقرأ الإجراء الفرعي التالي القيم من الخلايا الموجودة في العمود A من ورقة العمل النشطة، حتى يواجه خلية فارغة. يتم تخزين القيم في صفيف. يوضح مثال ماكرو Excel البسيط هذا استخدام:
Do Until
;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 لزيادة حجم المصفوفة بمقدار 10dCellValues(iRow) = Cells(iRow, 1).Value
" يخزن الخلية الحالية في صفيف CellValuesيقرأ الإجراء الفرعي التالي القيم من العمود A من ورقة العمل المسماة "الورقة2" ويقوم بإجراء عمليات حسابية على القيم. تتم طباعة القيم الناتجة في العمود A من ورقة العمل النشطة الحالية.
يوضح هذا الماكرو:
Do Until
;' 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 بسيطًا يتم تشغيله عند تحديث خلية في نطاق معين من ورقتنا. لنفترض أنك تريد تتبع التغييرات في العمود B (من B4 إلى B11) وتسجيل تاريخ ووقت التغيير في العمود A.
دعونا نمضي قدما على هذا النحو:
Developer
انقر على الخيار "Visual Basic
" لفتح محرر 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
سوف تستمر شركة Coveware by Veeam في تقديم خدمات الاستجابة لحوادث الابتزاز السيبراني. ستوفر Coveware إمكانات الطب الشرعي والمعالجة...
تُحدث الصيانة التنبؤية ثورة في قطاع النفط والغاز، من خلال اتباع نهج مبتكر واستباقي لإدارة المحطات.
أصدرت هيئة أسواق المال في المملكة المتحدة تحذيرًا بشأن سلوك شركات التكنولوجيا الكبرى في سوق الذكاء الاصطناعي. هناك…
اختتم مرسوم "البيوت الخضراء"، الذي صاغه الاتحاد الأوروبي لتعزيز كفاءة استخدام الطاقة في المباني، عمليته التشريعية مع…