artikel

Contoh Makro Excel yang ditulis dengan VBA

Contoh makro Excel mudah berikut telah ditulis menggunakan VBA 

Anggaran masa membaca: 3 minuti

Contoh VBA menggunakan Array

Prosedur Sub berikut membaca nilai daripada sel dalam lajur A lembaran kerja aktif, sehingga ia menemui sel kosong. Nilai disimpan dalam tatasusunan. Contoh makro Excel mudah ini menggambarkan penggunaan:

  • Pengisytiharan berubah-ubah;
  • Tatasusunan dinamik;
  • Satu kitaran Do Until;
  • Rujuk sel dalam lembaran kerja Excel semasa;
  • Fungsi VBA Ubound builtin (yang mengembalikan indeks tertinggi tatasusunan).
' 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

Prosedur menyimpan nilai dalam lajur A lembaran kerja aktif dalam tatasusunan, ambil perhatian bahawa:

  • Kitaran Do Until mengekstrak nilai setiap sel dalam lajur A lembaran kerja aktif, mengabaikan sel kosong
  • syarat"If UBound(dCellValues) < iRow” semak bahawa tatasusunan dCellValues ​​​​cukup besar untuk menyimpan maklumat, jika tidak, gunakan ReDim untuk meningkatkan saiz tatasusunan sebanyak 10
  • Akhir sekali, pendidikan​​dCellValues(iRow) = Cells(iRow, 1).Value” Menyimpan sel semasa dalam tatasusunan CellValues

Contoh VBA dengan operasi matematik

Prosedur Sub berikut membaca nilai dari lajur A lembaran kerja bernama "Helaian2" dan menjalankan operasi aritmetik pada nilai. Nilai yang terhasil dicetak dalam lajur A lembaran kerja aktif semasa.

Makro ini menggambarkan:

Surat berita inovasi
Jangan terlepas berita paling penting tentang inovasi. Daftar untuk menerimanya melalui e-mel.
  • Pengisytiharan berubah-ubah;
  • Objek Excel (khususnya, penggunaan kata kunci Tetapkan dan cara mengakses objek 'Lajur' daripada objek 'Helaian');
  • Satu kitaran Do Until;
  • Akses lembaran kerja dan julat sel dalam buku kerja Excel semasa.
' 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

Contoh VBA dengan rakaman tarikh pengubahsuaian

Mari kita tulis makro VBA mudah yang menyala apabila sel dalam julat tertentu helaian kami dikemas kini. Katakan anda ingin menjejaki perubahan dalam lajur B (B4 hingga B11) dan merekodkan tarikh dan masa perubahan dalam lajur A.
Mari kita teruskan seperti ini:

  • Dalam tab Developer klik pada pilihan "Visual Basic” untuk membuka editor VBA.
  • Dalam editor VBA, klik dua kali pada editor kod yang berkaitan dengan Sheet2.
  • Pilih Lembaran Kerja dari tab kanan (atau kiri) dan pilih pilihan Tukar.
  • Tambah kod 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

Simpan buku kerja dengan makro didayakan (contohnya, sebagai fail .xlsm).


Kini, setiap kali kami mengemas kini sel dalam lajur B (dari baris 1 hingga baris 10), sel dalam lajur A akan memaparkan tarikh dan masa semasa secara automatik.

Ercole Palmeri

Surat berita inovasi
Jangan terlepas berita paling penting tentang inovasi. Daftar untuk menerimanya melalui e-mel.

Artikel baru-baru ini

Veeam menampilkan sokongan paling komprehensif untuk perisian tebusan, daripada perlindungan kepada tindak balas dan pemulihan

Coveware oleh Veeam akan terus menyediakan perkhidmatan tindak balas insiden pemerasan siber. Coveware akan menawarkan keupayaan forensik dan pemulihan…

23 April 2024

Revolusi Hijau dan Digital: Bagaimana Penyelenggaraan Ramalan Mengubah Industri Minyak & Gas

Penyelenggaraan ramalan sedang merevolusikan sektor minyak & gas, dengan pendekatan yang inovatif dan proaktif terhadap pengurusan loji.…

22 April 2024

Pengawal selia antitrust UK meningkatkan penggera BigTech terhadap GenAI

CMA UK telah mengeluarkan amaran tentang tingkah laku Big Tech dalam pasaran kecerdasan buatan. di sana…

18 April 2024

Casa Green: revolusi tenaga untuk masa depan yang mampan di Itali

Dekri "Case Green", yang dirumuskan oleh Kesatuan Eropah untuk meningkatkan kecekapan tenaga bangunan, telah menamatkan proses perundangannya dengan…

18 April 2024