raksti

Excel makro piemēri, kas rakstīti ar VBA

Šādi vienkāršie Excel makro piemēri tika rakstīti, izmantojot VBA 

Paredzamais lasīšanas laiks: 3 minūti

VBA piemērs, izmantojot masīvu

Šī apakšprocedūra nolasa vērtības no aktīvās darblapas A kolonnas šūnām, līdz tiek parādīta tukša šūna. Vērtības tiek saglabātas masīvā. Šis vienkāršais Excel makro piemērs ilustrē izmantošanu:

  • Mainīgās deklarācijas;
  • Dinamiskie masīvi;
  • Cikls Do Until;
  • Skatiet pašreizējās Excel darblapas šūnas;
  • VBA funkcija Ubound iebūvēts (kas atgriež augstāko masīva indeksu).
' 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

Procedūra saglabā vērtības aktīvās darblapas A kolonnā masīvā, ņemiet vērā, ka:

  • Cikls Do Until izvelk katras šūnas vērtības aktīvās darblapas A kolonnā, ignorējot tukšās šūnas
  • Nosacījums"If UBound(dCellValues) < iRow” pārbauda, ​​vai dCellValues ​​masīvs ir pietiekami liels, lai saturētu informāciju, ja nē, izmantojiet ReDim, lai palielinātu masīva lielumu par 10
  • Visbeidzot, izglītība​​dCellValues(iRow) = Cells(iRow, 1).Value” Saglabā pašreizējo šūnu CellValues ​​masīvā

VBA piemērs ar matemātiskām operācijām

Sekojošā apakšprocedūra nolasa vērtības no darblapas A kolonnas ar nosaukumu “Sheet2” un veic aritmētiskās darbības ar vērtībām. Iegūtās vērtības tiek drukātas pašreizējās aktīvās darblapas A slejā.

Šis makro ilustrē:

Inovāciju biļetens
Nepalaidiet garām svarīgākās ziņas par jauninājumiem. Reģistrējieties, lai tos saņemtu pa e-pastu.
  • Mainīgās deklarācijas;
  • Excel objekti (konkrēti, atslēgvārda Set izmantošana un kā no objekta 'Sheets' piekļūt objektam 'Slejas');
  • Cikls Do Until;
  • Piekļūstiet darblapām un šūnu diapazoniem pašreizējā Excel darbgrāmatā.
' 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 piemērs ar modifikācijas datuma ierakstīšanu

Uzrakstīsim vienkāršu VBA makro, kas tiek aktivizēts, kad tiek atjaunināta šūna noteiktā mūsu lapas diapazonā. Pieņemsim, ka vēlaties izsekot izmaiņām kolonnā B (B4 līdz B11) un ierakstīt izmaiņu datumu un laiku A slejā.
Turpināsim šādi:

  • Cilnē Developer noklikšķiniet uz opcijas "Visual Basic”, lai atvērtu VBA redaktoru.
  • VBA redaktorā veiciet dubultklikšķi uz koda redaktora, kas saistīts ar Sheet2.
  • Labajā (vai kreisajā) cilnē izvēlieties Darblapa un atlasiet opciju Mainīt.
  • Pievienojiet VBA kodu:
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

Saglabājiet darbgrāmatu ar iespējotiem makro (piemēram, kā .xlsm failu).


Tagad katru reizi, kad mēs atjauninām šūnu kolonnā B (no 1. rindas līdz 10. rindai), A kolonnas šūna automātiski parādīs pašreizējo datumu un laiku.

Ercole Palmeri

Inovāciju biļetens
Nepalaidiet garām svarīgākās ziņas par jauninājumiem. Reģistrējieties, lai tos saņemtu pa e-pastu.

Jaunākie Raksti

Veeam piedāvā visplašāko atbalstu izspiedējvīrusu programmatūrai, sākot no aizsardzības līdz atbildei un atkopšanai

Veeam Coveware turpinās nodrošināt reaģēšanas pakalpojumus uz kiberizspiešanas incidentiem. Coveware piedāvās kriminālistikas un sanācijas iespējas…

23 aprīlis 2024

Zaļā un digitālā revolūcija: kā paredzamā apkope pārveido naftas un gāzes nozari

Prognozējošā apkope rada revolūciju naftas un gāzes nozarē, izmantojot novatorisku un proaktīvu pieeju rūpnīcu pārvaldībai.…

22 aprīlis 2024

Apvienotās Karalistes pretmonopola regulators ceļ BigTech trauksmi saistībā ar GenAI

Apvienotās Karalistes CMA ir izteikusi brīdinājumu par Big Tech uzvedību mākslīgā intelekta tirgū. Tur…

18 aprīlis 2024

Casa Green: enerģētikas revolūcija ilgtspējīgai nākotnei Itālijā

Eiropas Savienības izstrādātais dekrēts "Zaļās mājas", lai uzlabotu ēku energoefektivitāti, ir noslēdzis savu likumdošanas procesu ar…

18 aprīlis 2024