makala

Mifano ya Excel Macros iliyoandikwa na VBA

Mifano rahisi ifuatayo ya Excel jumla iliandikwa kwa kutumia VBA 

Muda uliokadiriwa wa kusoma: 3 minuti

Mfano wa VBA kwa kutumia Array

Utaratibu mdogo ufuatao husoma thamani kutoka seli katika safu wima A ya lahakazi amilifu, hadi itakapokutana na kisanduku tupu. Thamani zimehifadhiwa katika safu. Mfano huu rahisi wa Excel unaonyesha matumizi ya:

  • Matamko yanayobadilika;
  • Safu za nguvu;
  • Mzunguko Do Until;
  • Rejelea seli katika lahakazi ya sasa ya Excel;
  • Kazi ya VBA Ubound buildin (ambayo inarudisha faharisi ya juu zaidi ya safu).
' 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

Utaratibu huhifadhi maadili katika safu A ya lahakazi inayotumika katika safu, kumbuka kuwa:

  • Mzunguko Do Until hutoa thamani za kila seli katika safu wima A ya lahakazi amilifu, ikipuuza visanduku tupu
  • Hali"If UBound(dCellValues) < iRow” hukagua kuwa safu ya dCellValues ​​ni kubwa vya kutosha kushikilia habari, ikiwa sivyo, tumia ReDim kuongeza saizi ya safu kwa 10.
  • Hatimaye, elimu​​dCellValues(iRow) = Cells(iRow, 1).Value” Huhifadhi kisanduku cha sasa katika safu ya Thamani za Seli

Mfano wa VBA na shughuli za hisabati

Utaratibu mdogo ufuatao husoma thamani kutoka safu wima A ya laha ya kazi inayoitwa "Laha2" na hufanya shughuli za hesabu kwenye thamani. Thamani zinazotokana zimechapishwa katika safu wima A ya lahakazi amilifu ya sasa.

Hii macro inaonyesha:

Jarida la uvumbuzi
Usikose habari muhimu zaidi kuhusu uvumbuzi. Jisajili ili kuzipokea kwa barua pepe.
  • Matamko yanayobadilika;
  • Vipengee vya Excel (haswa, matumizi ya neno kuu la Weka na jinsi ya kufikia kipengee cha 'Safuwima' kutoka kwa kitu cha 'Laha');
  • Mzunguko Do Until;
  • Fikia laha za kazi na safu za kisanduku katika kitabu cha sasa cha 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

Mfano wa VBA na kurekodi tarehe ya marekebisho

Wacha tuandike jumla rahisi ya VBA ambayo huwaka wakati seli katika safu mahususi ya laha yetu inasasishwa. Tuseme unataka kufuatilia mabadiliko katika safu wima B (B4 hadi B11) na kurekodi tarehe na saa ya mabadiliko katika safu wima A.
Wacha tuendelee kama hii:

  • Kwenye kichupo Developer bonyeza chaguo "Visual Basic” ili kufungua kihariri cha VBA.
  • Katika kihariri cha VBA, bofya mara mbili kihariri cha msimbo kinachohusiana na Karatasi2.
  • Chagua Karatasi ya Kazi kutoka kwa kichupo cha kulia (au kushoto) na uchague Badilisha chaguo.
  • Ongeza nambari ya 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

Hifadhi kitabu cha kazi ukiwasha makro (kwa mfano, kama faili ya .xlsm).


Sasa, kila wakati tunasasisha kisanduku katika safu wima B (kutoka safu mlalo ya 1 hadi safu mlalo ya 10), kisanduku katika safu wima A kitaonyesha kiotomati tarehe na saa ya sasa.

Ercole Palmeri

Jarida la uvumbuzi
Usikose habari muhimu zaidi kuhusu uvumbuzi. Jisajili ili kuzipokea kwa barua pepe.

Makala ya hivi karibuni

Wakati Ujao Upo Hapa: Jinsi Sekta ya Usafirishaji Inavyofanya Mapinduzi katika Uchumi wa Kimataifa

Sekta ya majini ni nguvu ya kweli ya kiuchumi duniani, ambayo imepitia kwenye soko la bilioni 150 ...

1 Mei 2024

Wachapishaji na OpenAI hutia saini mikataba ya kudhibiti mtiririko wa taarifa zinazochakatwa na Intelligence Artificial Intelligence

Jumatatu iliyopita, Financial Times ilitangaza makubaliano na OpenAI. FT inatoa leseni kwa uandishi wake wa habari wa kiwango cha kimataifa…

Aprili 30 2024

Malipo ya Mtandaoni: Hivi Ndivyo Huduma za Utiririshaji Hukufanya Ulipe Milele

Mamilioni ya watu hulipia huduma za utiririshaji, kulipa ada za usajili za kila mwezi. Ni maoni ya kawaida kwamba wewe…

Aprili 29 2024

Veeam inaangazia usaidizi wa kina zaidi wa ransomware, kutoka kwa ulinzi hadi majibu na uokoaji

Coveware by Veeam itaendelea kutoa huduma za kukabiliana na matukio ya ulaghai mtandaoni. Coveware itatoa uwezo wa uchunguzi na urekebishaji…

Aprili 23 2024