Pada tulisan kali ini, saya mecoba menghadirkan bagaimana kita
mengcopy range data (A3:E14) yang berada di sheet2 ke sheet3, sebetulnya
masih sama dengan tulisan sebelumnya , tapi kali ini mengcopy tidak
langsung dalam satu range, tetapi kita akan mengcopy berbaris, artinya
setaip selesai satu baris dibaca (A3:E3), data langsung dicopy ke
sheet3, kemudian kembali membaca baris berikutnya sampai data habis,
atau kolom A ketemu data kosong ( Empty Cell ).
Langakah pertama buatlah satu button mulai di sheet1 lalu tambahkan dengan coding VBA seperti dibawah ini :
Sub btn_mulai()
Sheet2.Activate
Range(“A3”).Select
temp = ActiveCell.Offset(0, 0).Value
Do While temp <> “”
temp = ActiveCell.Offset(0 + n, 0).Value
kode = ActiveCell.Offset(0 + n, 1).Value
nama = ActiveCell.Offset(0 + n, 2).Value
jumlah = ActiveCell.Offset(0 + n, 3).Value
harga = ActiveCell.Offset(0 + n, 4).Value
If temp <> “” Then
Sheet3.Activate
Range(“A3”).Select
ActiveCell.Offset(0 + n, 0).Value = temp
ActiveCell.Offset(0 + n, 1).Value = kode
ActiveCell.Offset(0 + n, 2).Value = nama
ActiveCell.Offset(0 + n, 3).Value = jumlah
ActiveCell.Offset(0 + n, 4).Value = harga
If n > 0 Then
ActiveCell.Offset(0 + n, 5).Value = (jumlah * harga)
ActiveCell.Offset(0 + n, 5).Font.Bold = True
Else
ActiveCell.Offset(0 + n, 5).Value = “Total”
ActiveCell.Offset(0 + n, 5).Font.Bold = True
End If
End If
Sheet2.Activate
n = n + 1
Loop
Sheet3.Activate
Range(“A3”).Select
End Sub
Selanjutnya buatlah contoh data disheet2 seperti dibawah ini :
Setelah data siap, data akan siap dicopy ke sheet3 dengan cara mengklik butto mulai yang dibuat sebelumnya.
Sebagai tambahan, buat juga satu button hapus di sheet1, untuk
menghapus range hasil copy pada sheet3, dengan coding seperti dibawah
ini (bisa disesuaikan range mana yang akan mau dihapus) :
Sub btn_hapus()
Sheets(“Sheet3”).Select
Range(“A1:H100”).Select
Selection.Clear
Range(“A1”).Select
Sheets(“Sheet1”).Select
End Sub
Dengan tampilan sheet1 seperti dibawah ini :
Copy perbaris with Macro 2
Sedikit berbeda dengan sebelumnya, data yang akan dicopy adalah mulai cell A3 sampai data habis,
pada coding ini jumlah kolom kekanan ditentukan 100 (dim datakol 100),
anda boleh merubahnya sesuai keinginan, untuk jumlah baris tidak
ditentukan, yakni sampai pada kolom A ditemukan data kosong (empty
cell).
Setiap baris perkolom/cell yang dibaca yakni dari cell A3, data akan
ditampung dalam sebuah array, kemudian jika pada cell sudah ketemu data
kosong, data akan dicopy ke sheet3.
Coding untuk mengcopy data dari sheet2 ke sheet3 sesuai ilustrasi diatas adalah sebagai berikut :
Sub btn_mulai()
Sheet2.Activate
Range(“A3”).Select
Dim datakol(100)
brs = 0
temp = ActiveCell.Offset(0, 0).Value
Do While temp <> “”
temp = ActiveCell.Offset(0 + brs, 0).Value
‘Baca/Ambil data setiap kolom pada Sheet2
tmpkol = ActiveCell.Offset(n, 0).Value
kol = 0
Do While tmpkol <> “”
datakol(kol) = ActiveCell.Offset(0 + brs, kol).Value
tmpkol = ActiveCell.Offset(0 + brs, kol).Value
kol = kol + 1
Loop
‘Cetak hasil baca pada sheet3
If temp <> “” Then
Sheet3.Activate
Range(“A3”).Select
For ctk = 0 To (kol – 1)
ActiveCell.Offset(0 + brs, ctk).Value = datakol(ctk)
Next
End If
Sheet2.Activate
brs = brs + 1
Loop
Sheet3.Activate
Range(“A3”).Select
End Sub