Məqalələr

VBA ilə yazılmış Excel makrolarının nümunələri

Aşağıdakı sadə Excel makro nümunələri VBA istifadə edərək yazılmışdır 

Təxmini oxuma vaxtı: 3 minuti

Array istifadə edərək VBA nümunəsi

Aşağıdakı Alt prosedur boş xana ilə qarşılaşana qədər aktiv iş vərəqinin A sütununun xanalarından dəyərləri oxuyur. Dəyərlər massivdə saxlanılır. Bu sadə Excel makro nümunəsi aşağıdakıların istifadəsini göstərir:

  • Dəyişən bəyannamələr;
  • Dinamik massivlər;
  • Bir dövrə Do Until;
  • Cari Excel iş vərəqindəki xanalara baxın;
  • VBA funksiyası Ubound buildin (massivin ən yüksək indeksini qaytarır).
' 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

Prosedura aktiv iş vərəqinin A sütunundakı dəyərləri massivdə saxlayır, nəzərə alın ki:

  • Dövr Do Until boş xanalara məhəl qoymadan aktiv iş vərəqinin A sütununda hər bir xananın dəyərlərini çıxarır
  • Vəziyyət "If UBound(dCellValues) < iRow” dCellValues ​​massivinin məlumatı saxlamaq üçün kifayət qədər böyük olduğunu yoxlayır, əgər deyilsə, massivin ölçüsünü 10 artırmaq üçün ReDim-dən istifadə edin
  • Nəhayət, təhsil​​dCellValues(iRow) = Cells(iRow, 1).Value” Cari xananı CellValues ​​massivində saxlayır

Riyazi əməliyyatlarla VBA nümunəsi

Aşağıdakı Alt prosedur "Vərəq2" adlı iş vərəqinin A sütunundan dəyərləri oxuyur və dəyərlər üzərində hesab əməliyyatları yerinə yetirir. Yaranan dəyərlər cari aktiv iş vərəqinin A sütununda çap olunur.

Bu makro göstərir:

İnnovasiya bülleteni
Yeniliklərlə bağlı ən vacib xəbərləri qaçırmayın. Onları e-poçtla almaq üçün qeydiyyatdan keçin.
  • Dəyişən bəyannamələr;
  • Excel obyektləri (xüsusilə, Set açar sözünün istifadəsi və "Cədvəllər" obyektindən "Sütunlar" obyektinə necə daxil olmaq olar);
  • Bir dövrə Do Until;
  • Cari Excel iş kitabında iş vərəqlərinə və xana diapazonlarına daxil olun.
' 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

Dəyişiklik tarixi qeydi ilə VBA nümunəsi

Gəlin vərəqimizin müəyyən diapazonunda olan xana yeniləndikdə işə salınan sadə VBA makrosunu yazaq. Tutaq ki, B sütununda (B4-dən B11-ə) dəyişiklikləri izləmək və A sütununda dəyişiklik tarixini və vaxtını qeyd etmək istəyirsiniz.
Gəlin belə davam edək:

  • Nişanda Developer seçiminə klikləyin "Visual Basic” VBA redaktorunu açmaq üçün.
  • VBA redaktorunda Sheet2 ilə əlaqəli kod redaktoruna iki dəfə klikləyin.
  • Sağ (və ya sol) nişanından İş vərəqini seçin və Dəyişiklik seçimini seçin.
  • VBA kodu əlavə edin:
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

İş kitabını makroları aktivləşdirərək yadda saxlayın (məsələn, .xlsm faylı kimi).


İndi biz hər dəfə B sütununda (1-ci sətirdən 10-cu sətirə) xananı yenilədikdə, A sütunundakı xana avtomatik olaraq cari tarix və vaxtı göstərəcək.

Ercole Palmeri

İnnovasiya bülleteni
Yeniliklərlə bağlı ən vacib xəbərləri qaçırmayın. Onları e-poçtla almaq üçün qeydiyyatdan keçin.

Articoli recenti

Veeam müdafiədən tutmuş cavab və bərpaya qədər ransomware üçün ən əhatəli dəstəyi təqdim edir

Coveware by Veeam kiber qəsb hallarına cavab xidmətləri göstərməyə davam edəcək. Coveware məhkəmə və remediasiya imkanları təklif edəcək...

23 Aprel 2024

Yaşıl və Rəqəmsal İnqilab: Proqnozlaşdırılan Baxım Neft və Qaz Sənayesini necə çevirir?

Proqnozlaşdırılan texniki xidmət zavodun idarə edilməsinə innovativ və proaktiv yanaşma ilə neft və qaz sektorunda inqilab edir.…

22 Aprel 2024

Böyük Britaniyanın antiinhisar tənzimləyicisi GenAI üzərində BigTech həyəcanını qaldırır

Böyük Britaniyanın CMA süni intellekt bazarında Big Tech-in davranışı ilə bağlı xəbərdarlıq edib. Orada…

18 Aprel 2024

Casa Green: İtaliyada davamlı gələcək üçün enerji inqilabı

Avropa İttifaqı tərəfindən binaların enerji səmərəliliyini artırmaq üçün tərtib edilən "Yaşıl Evlər" Fərmanı qanunvericilik prosesini yekunlaşdırdı ...

18 Aprel 2024