Apresiasi VBA CODE from Mr. Han
Sebagai tambahan bahan pembelajaran, siti tampilkan pula makro dari pak
Handoko / (www.yuhana.com) untuk kasus yg sama.
Di sini anda akan melihat demonstrasi proses mencari no.Karyawan yg lebih
ketat,
maksudnya : diambil benar benar dari tabel Data2 berdasarkan kesejajarannya
dengan data yg di-retrieved ke tabel "Jawab".
Bandingkan dengan kesembronoan siti: yg sekedar memanfaatkan VLOOKUP
worksheetFunction yg ditulis melalui coding, tanpa yakin bahwa tabel (array)
yg dirujuk adalah Unique records./ atau tidak Unique ??
Pencarian No.Karyawan di bagian akhir loop Luar, dilakukan dengan loop.
Jika datanya banyak tentu durasinya running-time akan memanjang agak
drastis, karena makro ini menjalankan 2 Looping, dgn konfigurasi 1 looping
LUAR mengandung 1 looping DALAM, yg artinya Loop DALAM itu bukan hanya
diputar sekali trus boleh istirOhat, melainkan setiap Langah pada Loop LUAR
di akan diputar lagi..
Loop Luar mengunjungi tiap records di tabel sumber (Data2), tuntas.
Loop Dalam mengunjungi tiap baris di tabel Data1, tidak mesti tuntas,
karena dihentikan ditengah jalan jika kritera (mencari No Karyawan) telah
terpenuhi.
Proses penyalinan data dilakukan cell by cell dengan cara memindahkan VALUE
cells yg Records nya memenuhi 'kriteria OK.'
Di sini, walaupun cells yg dibaca maupun cell tempat menuliskan VALUE
urutannya sama, Pak Handoko tidak menggunakan kemampuan Loop, melainkan
menuliskan proses baca & tulis di cells dengan masing masing cells dalam
sebaris perintah.
Demikian juga dengan cara proses mengcopy JudulKolom di awal makro.
Ini perbedaan ke 2 dengan makro dari siti yg menggunakan metod copy per
range_baris.
Di ujung bawah, sebagai akibat logis dari pemindahan value, ada range yg
perlu diurusi formatnya (Date format)
Pak Han pun tidak lupa memformat sekolom D penuh agar angka serial yg
nyangkut di situ mauk tampil sbg tanggal dgn format 'dd mmm yyyy'
Siti tunjuk-tunjuk dgn maksud agar para "pendamba pelajaran makroh" dapat
menyerap aura kedua teknik tsb. Perbedaannya, kesamaannya dan juga
kelebihan dan kekurangannya, serta kapan dan pd situasi bgmana kita cocok
mengimplementasikannya.
Dapat dilihat pula dalam mengekspresikan object Sheet / Range yg induknya
sama, Pak Han menulisnya berulang-ulang. Terasa bahwa pak Handoko sengaja
membiarkan penulisan spt itu tanpa meringkas misalnya dengan statement With
- End WIth atau dgn Looping, maupun dgn mem-variablekan object..
Saya yakin sekali, di balik meriahnya coding ini tentu pak Handoko punya
maksud pembelajaran kepada kita-kita. Yaitu agar kita tahu dulu: algoritma,
proses dan logika programnya. Urusan teknik peringkasan code nanti gampang
dijelaskan belakangan, asal inti "algor / "jalan-ceritak"nya sudah kepegang.
Begitu kan ya Pak Han..
( Mohon maaf Pak Han ini siti main tulis saja, belum minta ijin pak Han. Itu
lho... sudah banyak "anak-anak" minta tulisan membahas makroh... Mereka itu
nekat saja walo pun tahu: makroh: ditinggalkan = berpahala, dilaksanakan =
memdapat cela tapi ndak dosa..)
Kembali ke Algor -vs- peringkasan coding: Siti sungguh yakin akan hal itu
(paragraf sebelum bercanda..) karena selama ini makro-makro dari beliau
sungguh mencerminkan kepiawaian beliau dalam ber VBA-ria...
Hai para pendamba makroh dan para juri "potelod" !! ... jangan pernah
lewatkan membuka module VBE kiriman posting dari pak Han ya..?
Tiap akhir bulan akan diundi, siapa yg joged-nya paling asyoi dapat prize
250ribu dipotong PPN, ( lho? nguawur ae.. pajak apaan cih,.. PBB ya.?) ...
tapinya, Ambil sendiri di Polsek bluewater atau jurangmangu harus bawa
cardmember XL-mania... xi xi xi... *(husy! cewek jilbab kok 'ngikik' kaya
kunti....)
*22 mei 2008
-ctv-
Sub TransferBersyarat()
''-----Transfer data sheet(Data2) ke sheet(Jawab) u/yg berstatus OK.
Dim brsN As Integer: Dim brs2N As Integer: Dim brs3N As Integer
Sheets("Jawab").Cells(3, 1) = Sheets("Data2").Cells(1, 2)
Sheets("Jawab").Cells(3, 2) = Sheets("Data2").Cells(1, 3)
Sheets("Jawab").Cells(3, 3) = Sheets("Data2").Cells(1, 4)
Sheets("Jawab").Cells(3, 4) = Sheets("Data2").Cells(1, 5)
Sheets("Jawab").Cells(3, 5) = Sheets("Data1").Cells(1, 5)
brsN = 2: brs2N = 2
Do While Sheets("Data2").Cells(brsN, 1) <> ""
If LCase(Sheets("Data2").Cells(brsN, 1)) = "ok" Then
Sheets("Jawab").Cells(brs2N + 2, 1) = Sheets("Data2").Cells(brsN, 2)
Sheets("Jawab").Cells(brs2N + 2, 2) = Sheets("Data2").Cells(brsN, 3)
Sheets("Jawab").Cells(brs2N + 2, 3) = Sheets("Data2").Cells(brsN, 4)
Sheets("Jawab").Cells(brs2N + 2, 4) = Sheets("Data2").Cells(brsN, 5)
''-----Cari No.Karyawan berdasarkan No.Lot di sheet(Data2).
brs3N = 2
Do While Sheets("Data1").Cells(brs3N, 1) <> ""
If Sheets("Data1").Cells(brs3N, 1) = Sheets("Data2").Cells(brsN, 2)
Then Exit Do
brs3N = brs3N + 1
Loop
Sheets("Jawab").Cells(brs2N + 2, 5) = Sheets("Data1").Cells(brs3N, 5)
brs2N = brs2N + 1
End If
brsN = brsN + 1
Loop
Sheets("Jawab").Select
Columns("D:D").Select
Selection.NumberFormat = "[$-421]dd mmmm yyyy;@"
End Sub
2008/5/19 www.yuhana.com/handoko <[EMAIL PROTECTED]>:
> Rekan Ali
> Silakan dicoba solusi macro di sheet(Jawab).
> Bila ada yang tidak dipahami, jangan ragu ditanyakan lagi.
>
> Selamat mencoba :-)
> http://www.yuhana.com
> (situs koleksi hasil karya sumber inspirasi)
>
>
> ----- Original Message -----
> From: Ali.F
> To: [email protected]
> Sent: Monday, May 19, 2008 12:00 PM
> Subject: ]] XL-mania [[ Copy data antar sheet bersyarat dengan macro
>
> Halo Excel mania ,
>
> Saya mau minta tolong lagi gimana memecahkan masalah yang ada dilampiran
> dengan macro, yaitu mengcopy data yang kita inginkan saja ke sheet lain,
> yang mana selama ini saya hanya memakai formula biasa tapi process nya
> sangat lambat dan banyaknya data selalu berubah dari ratusan sampai ribuan
> sehingga saya harus mengubah/edit formula dulu baru saya copy ke bawah,
> apakah bisa dengan macro, sebelumnya ucapkan terima kasih atas solusinya.
>
> Regards,
> Ali
> PT. CCI Bintan
> Indonesia
>