Straipsniai

„Excel“ makrokomandų, parašytų naudojant VBA, pavyzdžiai

Šie paprasti „Excel“ makrokomandų pavyzdžiai buvo parašyti naudojant VBA 

Numatomas skaitymo laikas: 3 minuti

VBA pavyzdys naudojant Array

Ši antrinė procedūra nuskaito reikšmes iš aktyvaus darbalapio A stulpelio langelių, kol atsiranda tuščias langelis. Vertės saugomos masyve. Šis paprastas „Excel“ makrokomandos pavyzdys iliustruoja, kaip naudoti:

  • Kintamosios deklaracijos;
  • Dinaminiai masyvai;
  • Ciklas Do Until;
  • Žr. langelius dabartiniame „Excel“ darbalapyje;
  • VBA funkcija Ubound builtin (kuris grąžina aukščiausią masyvo indeksą).
' 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 išsaugo aktyvaus darbalapio A stulpelio reikšmes masyve, atkreipkite dėmesį, kad:

  • Ciklas Do Until ištraukia kiekvieno aktyvaus darbalapio A stulpelio langelio reikšmes, nepaisydamas tuščių langelių
  • Būsena "If UBound(dCellValues) < iRow“ patikrina, ar dCellValues ​​masyvas yra pakankamai didelis, kad tilptų informacija, jei ne, naudokite ReDim, kad padidintumėte masyvo dydį 10
  • Galiausiai, švietimas​​dCellValues(iRow) = Cells(iRow, 1).Value“ Saugo dabartinį langelį CellValues ​​masyve

VBA pavyzdys su matematinėmis operacijomis

Ši antrinė procedūra nuskaito reikšmes iš darbalapio „Sheet2“ stulpelio A ir atlieka aritmetines vertes. Gautos reikšmės atspausdinamos esamo aktyvaus darbalapio A stulpelyje.

Ši makrokomanda iliustruoja:

Inovacijų naujienlaiškis
Nepraleiskite svarbiausių naujienų apie naujoves. Prisiregistruokite, kad gautumėte juos el.
  • Kintamosios deklaracijos;
  • „Excel“ objektai (konkrečiai, raktinio žodžio „Set“ naudojimas ir kaip pasiekti objektą „Stulpeliai“ iš objekto „Sheets“);
  • Ciklas Do Until;
  • Pasiekite darbalapius ir langelių diapazonus dabartinėje „Excel“ darbaknygėje.
' 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 pavyzdys su modifikavimo datos įrašymu

Parašykime paprastą VBA makrokomandą, kuri suaktyvinama, kai atnaujinamas konkretaus lapo diapazono langelis. Tarkime, kad norite stebėti pakeitimus B stulpelyje (B4–B11) ir įrašyti pakeitimo datą ir laiką A stulpelyje.
Tęskime taip:

  • Skirtuke Developer spustelėkite parinktį "Visual Basic“, kad atidarytumėte VBA redaktorių.
  • VBA rengyklėje dukart spustelėkite kodo rengyklę, susijusią su Sheet2.
  • Dešinėje (arba kairėje) skirtuke pasirinkite Darbalapis ir pasirinkite parinktį Keisti.
  • Pridėti VBA kodą:
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šsaugokite darbaknygę su įjungtomis makrokomandomis (pavyzdžiui, kaip .xlsm failą).


Dabar kiekvieną kartą, kai atnaujiname B stulpelio langelį (nuo 1 eilutės iki 10 eilutės), A stulpelio langelyje automatiškai bus rodoma dabartinė data ir laikas.

Ercole Palmeri

Inovacijų naujienlaiškis
Nepraleiskite svarbiausių naujienų apie naujoves. Prisiregistruokite, kad gautumėte juos el.

Naujausi straipsniai

Veeam siūlo išsamiausią išpirkos reikalaujančių programų palaikymą – nuo ​​apsaugos iki atsako ir atkūrimo

„Coveware by Veeam“ ir toliau teiks reagavimo į kibernetinio turto prievartavimo incidentus paslaugas. „Coveware“ pasiūlys teismo ekspertizės ir ištaisymo galimybes…

23 balandis 2024

Žalioji ir skaitmeninė revoliucija: kaip numatoma priežiūra keičia naftos ir dujų pramonę

Nuspėjama priežiūra keičia naftos ir dujų sektorių, taikant naujovišką ir iniciatyvų požiūrį į gamyklų valdymą.…

22 balandis 2024

JK antimonopolinis reguliatorius kelia „BigTech“ aliarmą dėl „GenAI“.

JK CMA paskelbė įspėjimą dėl Big Tech elgesio dirbtinio intelekto rinkoje. Ten…

18 balandis 2024

Casa Green: energetikos revoliucija tvariai ateičiai Italijoje

„Žaliųjų namų“ dekretas, kurį Europos Sąjunga suformulavo siekiant padidinti pastatų energijos vartojimo efektyvumą, baigė teisėkūros procesą su…

18 balandis 2024