Artikulo

Mga halimbawa ng Excel Macros na isinulat gamit ang VBA

Ang mga sumusunod na simpleng Excel macro na halimbawa ay isinulat gamit ang VBA 

Tinatayang oras ng pagbabasa: 3 minuto

Halimbawa ng VBA gamit ang Array

Ang sumusunod na Sub procedure ay nagbabasa ng mga halaga mula sa mga cell sa column A ng aktibong worksheet, hanggang sa makatagpo ito ng isang blangkong cell. Ang mga halaga ay naka-imbak sa isang array. Ang simpleng halimbawa ng Excel macro na ito ay naglalarawan ng paggamit ng:

  • Mga deklarasyon ng variable;
  • Mga dynamic na array;
  • Isang cycle Do Until;
  • Sumangguni sa mga cell sa kasalukuyang Excel worksheet;
  • Ang function ng VBA Ubound builtin (na nagbabalik ng pinakamataas na index ng isang array).
' 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

Iniimbak ng pamamaraan ang mga halaga sa column A ng aktibong worksheet sa isang array, tandaan na:

  • Ang cycle Do Until kinukuha ang mga halaga ng bawat cell sa column A ng aktibong worksheet, hindi pinapansin ang mga blangkong cell
  • Ang kondisyon"If UBound(dCellValues) < iRow” sinusuri na ang dCellValues ​​​​array ay sapat na malaki upang hawakan ang impormasyon, kung hindi, gamitin ang ReDim upang dagdagan ang laki ng array ng 10
  • Panghuli, edukasyon​​dCellValues(iRow) = Cells(iRow, 1).Value” Iniimbak ang kasalukuyang cell sa array ng CellValues

Halimbawa ng VBA na may mga pagpapatakbo sa matematika

Ang sumusunod na pamamaraan ng Sub ay nagbabasa ng mga halaga mula sa hanay A ng worksheet na pinangalanang "Sheet2" at nagsasagawa ng mga pagpapatakbo ng aritmetika sa mga halaga. Ang mga resultang halaga ay naka-print sa column A ng kasalukuyang aktibong worksheet.

Ang macro na ito ay naglalarawan:

newsletter ng pagbabago
Huwag palampasin ang pinakamahalagang balita sa pagbabago. Mag-sign up upang matanggap ang mga ito sa pamamagitan ng email.
  • Mga deklarasyon ng variable;
  • Excel objects (partikular, paggamit ng Set na keyword at kung paano i-access ang 'Columns' object mula sa 'Sheets' object);
  • Isang cycle Do Until;
  • I-access ang mga worksheet at cell range sa kasalukuyang Excel workbook.
' 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

Halimbawa ng VBA na may pag-record ng petsa ng pagbabago

Sumulat tayo ng isang simpleng VBA macro na gumagana kapag ang isang cell sa isang partikular na hanay ng aming sheet ay na-update. Ipagpalagay na gusto mong subaybayan ang mga pagbabago sa column B (B4 hanggang B11) at itala ang petsa at oras ng pagbabago sa column A.
Magpatuloy tayo tulad nito:

  • Sa tab Developer mag-click sa opsyon "Visual Basic” para buksan ang VBA editor.
  • Sa VBA editor, i-double click ang code editor na nauugnay sa Sheet2.
  • Piliin ang Worksheet mula sa kanan (o kaliwa) na tab at piliin ang opsyong Baguhin.
  • Magdagdag ng VBA code:
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

I-save ang workbook na may naka-enable na macros (halimbawa, bilang isang .xlsm file).


Ngayon, sa tuwing mag-a-update kami ng cell sa column B (mula row 1 hanggang row 10), awtomatikong ipapakita ng cell sa column A ang kasalukuyang petsa at oras.

Ercole Palmeri

newsletter ng pagbabago
Huwag palampasin ang pinakamahalagang balita sa pagbabago. Mag-sign up upang matanggap ang mga ito sa pamamagitan ng email.

Kamakailang Mga Artikulo

Makabagong interbensyon sa Augmented Reality, kasama ang isang Apple viewer sa Catania Polyclinic

Isang ophthalmoplasty operation gamit ang Apple Vision Pro commercial viewer ay isinagawa sa Catania Polyclinic…

3 Mayo 2024

Ang Mga Benepisyo ng Mga Pangkulay na Pahina para sa mga Bata - isang mundo ng mahika para sa lahat ng edad

Ang pagbuo ng mahusay na mga kasanayan sa motor sa pamamagitan ng pangkulay ay naghahanda sa mga bata para sa mas kumplikadong mga kasanayan tulad ng pagsusulat. Kulayan…

2 Mayo 2024

Narito na ang Hinaharap: Paano Binabago ng Industriya ng Pagpapadala ang Global Economy

Ang sektor ng hukbong-dagat ay isang tunay na pandaigdigang pang-ekonomiyang kapangyarihan, na nag-navigate patungo sa isang 150 bilyong merkado...

1 Mayo 2024

Pumirma ang mga publisher at OpenAI ng mga kasunduan para i-regulate ang daloy ng impormasyong pinoproseso ng Artificial Intelligence

Noong nakaraang Lunes, inihayag ng Financial Times ang isang deal sa OpenAI. Nilisensyahan ng FT ang world-class na pamamahayag nito...

Abril 30 2024