Membuat Macro Excel Yang Secara Otomatis Berjalan Ketika Cell Dirubah / Dimasukkan Data

Disini saya mengambil 1 contoh kasus, yaitu :

 Di samping terdapat data penerimaan dan data stock. Pada kasus ini jika cell A2(Jumlah Penerimaan) dirubah datanya maka cell B2 (Jumlah Stock) akan ditambahkan Jumlah Penerimaan secara otomoatis. Jadi apabila Jumlah Penerimaan diisi 15 maka  Jumlah Stock menjadi 25.

Apabila kita membuat macro excel manual maka kita hanya perlu membuat Sub seperti ini saja :

Sub TambahStock()
    Range("B2").Value = Range("B2").Value  + Range("A2").Value
End Sub

Untuk membuat macro excel yang secara otomatis berjalan ketika cell dirubah / dimasukkan data. Maka kita harus membuat pendeteksi perubahan data pada  cell A2(Jumlah Penerimaan).

Excel memiliki kemampuan untuk mendeteksi cell manakah yang berubah pada Worksheet dengan privat sub Worksheet_Change. Nah,  untuk membuat  privat sub Worksheet_Change lakukan cara seperti ini setelah anda membuka Visual Basic pada Ribbon Tab Developer :

      1. Pada Project Explorer Buka Microsoft Excel Object -> Sheet1 (Sheet1)  (Disini saya menggunakan Sheet1, anda bisa mengganti dengan sheet yang lain yang anda gunakan)

      2. Kita tinggal mengganti 2 Combo box (Enggak tahu namanya :D) pada Editor  jadi kayak di bawah ini

Karena kita hanya ingin mendeteksi 1 cell saja. kita harus mengubah script menjadi seperti ini :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or IsEmpty(Target) _
       Or (Target.Column <> [Nomor kolom cell yang dideteksi] _
           And Target.Row !  [Nomor kolom cell yang dideteksi]) Then
        Exit Sub
    Else
        'Script yang ingin anda jalankan
    End If
End Sub 

Keterangan :

  • Target.Cells.Count > 1 : lebih dari 1 cell yang diubah
  • IsEmpty(Target) :  isi dari cell Target dihapus

Untuk kasus ini, script akan menjadi seperti ini :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or IsEmpty(Target) Or _ ( Target.Column <> 1 And Target.Row <> 2 ) Then
        Exit Sub
    Else
         Range("B2").Value = Range("B2").Value + Range("A2").Value
    End If
End Sub

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s