Contoh kode macro di bawah ini berisi event Worksheet_Change yang memungkinkan Anda untuk menjumlahkan angka-angka yang dimasukkan ke dalam sel yang sama.

Gambar di bawah ini adalah worksheet yang sesuai sebagai contoh voting menggunakan akumulasi angka.

Dalam contoh semua sel pada kolom B (kecuali sel B1), ditambahkan dengan angka yang baru pada angka yang sudah ada di dalam sel tersebut, sehingga nilai menjadi terakumulasi.

Contohnya jika semula sel B2 berisi angka 1 dan anda menambahkannya dengan angka 3, maka sel akan mengakumulasikan nilai dan menampilkan hasilnya yaitu 4 pada sel tersebut.

Dan ketika nilai di-Enter maka pointer tetap berada di tempatnya semula.

Ikuti langkah demi langkah berikut untuk menyusun kodenya:

1. Klik kanan tab Sheet tujuan lalu pilih View Code.

2. Pada kotak pilihan Object pilih Worksheet, lalu pada kotak pilihan Procedure, Anda pilih Change sehingga menghasilkan garis kode berikut pada module worksheet:

Private Sub Worksheet_Change(ByVal Target As Range)

3. Jadikan sel B1 sebagai judul kolom:

If Target.Address = "$B$1" Then Exit Sub

4. Jadikan kolom B sebagai target, dalam VBA kolom B ditulis 2 dan hanya satu kali dalam satu sel yang dapat diganti:

If Target.Column <> 2 Or Target.Cells.Count > 1 Then Exit Sub

5. Dengan menekan tombol Delete mencetuskan event Change. Anda mungkin ingin menghapus konten sel dan memulai dari sel kosong, jadi event Change dihentikan jika tombol Delete ditekan:

If IsEmpty(Target) Then Exit Sub

6. Sediakan percobaan untuk masukan selain angka, dan tolak masukan tersebut:

If IsNumeric(Target.Value) = False Then

7. Matikan event karena Anda ingin mengembalikan keadaan sebelum nilai selain angka dimasukkan, sekaligus mencetuskan event Change:

Application.EnableEvents = False

8. Jalankan perintah Undo pada masukan selain angka yang dihapus:

Application.Undo

9. Hidupkan kembali event:

Application.EnableEvents = True

10. Beri peringatan dengan suatu kotak pesan bahwa hanya angka saja yang dibolehkan lalu hentikan prosedur event Change dengan menggunakan statement Exit Sub:

MsgBox "Hanya angka saja yang dibolehkan di kolom B.", _
vbExclamation, _
"Peringatan!"
Exit Sub
End If

11. Tentukan dua variabel dengan jenis data Double yang satu contohnya VL untuk nilai numerik yang sudah ada sebelum diganti dan lainnya VB untuk nilai numerik yang baru dimasukkan sehingga mencetuskan event Change:

Dim VL As Double, VB As Double

12. Pertama tetapkan variabel VB dahulu, yang merupakan angka yang baru dimasukkan ke dalam sel:

VB = Target.Value

13. Kembalikan keadaan agar menampilkan nilai terdahulu, ini membuat event dimatikan agar tidak mencetuskan kembali event Change saat event Change hidup atau sudah ada:

Application.EnableEvents = False

14. Jalankan perintah Undo agar nilai sebelumnya ditampilkan:

Application.Undo

15. Tetapkan variabel VL yang sangat memungkinkan untuk dilakukan pada titik ini karena nilai sebelumnya dikembalikan.

VL = Target.Value

16. Masukkan ke dalam sel jumlah nilai sebelumnya yang lama ditambah dengan nilai baru yang terakhir dimasukkan, dengan mengacu pada dua variabel:

Target.Value = VL + VB

17. Hidupkan event dan sekarang semua perubahan pada sel telah ditetapkan:

Application.EnableEvents = True

18. Kode lengkapnya sebagai berikut:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then Exit Sub
If Target.Column <> 2 Or Target.Cells.Count > 1 Then Exit Sub
If IsEmpty(Target) Then Exit Sub
If IsNumeric(Target.Value) = False Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "Hanya angka saja yang dibolehkan di kolom B.", _
vbExclamation, _
"Peringatan!"
Exit Sub
End If
Dim VL As Double, VB As Double
VB = Target.Value
Application.EnableEvents = False
Application.Undo
VL = Target.Value
Target.Value = VL + VB
Application.EnableEvents = True
End Sub

19. Tekan Alt+Q untuk kembali ke worksheet dan silakan uji coba kode yang Anda buat dengan memasukkan bilangan pada sel di kolom B.

Itulah penjelasan cara membuat contoh voting sederhana dengan angka menggunakan Macro VBA Excel, selamat mencoba dan semoga bermanfaat.