Assalamu'alaikum Wr. Wb. Dear BeExceller,
Variasi lain dari sekiun jawaban challange yang ada. Tahap 1 : menulis bebas seluruh alur proses dengan bahasa manusia... Langkahnya kira-kira begini : (dasar-dasarnya dulu ya... pengembangannya nanti sajah kalo sudah cucok alurnya) *0.* semua isi cell di sheet tersebut dibuang dulu *1.* mendapatkan area yang akan diwarnai (idealnya, cara ini menggunakan patokan jumlah kolom yang ganjil). *a.* anggap saja area yang akan diwarnai mulai cell C3 sebanyak 16 baris dan 17 kolom. Jadi, dari C3 diperluas sebanyak 16 baris dan 17 kolom. Rasanya pernah dengar tentang perluasan range, tetapi hanya samar-samar saja dengarnya ? coba jalan-jalan kesini pada bagian 'Memanfaatkan Resize'<http://b-excel.blogspot.com/2013/09/belajarvba-011-range-04-offset-dan.html> . *2.* pada area tersebut akan diwarnai dengan warna biru saja, selang seling setiap 2. a. Tentu masih ingat atau samar-samar ingat atau pernah tahu dan belum suka mengingatnya bahwa pada suatu area range C7:H8, cell ke-1 nya adalah cell C7, cell ke-2 adalah cell D7 (bergerak kekanan ke kolom berikut) cell ke-6 nya adalah H7. Sedangkan cell ke-7-nya adalah cell C8 karena area range C7:H8 hanya berisi 6 kolom, maka cell ke-7 pastilah sudah sampai kolom terkanan lalu mulai turun ke baris berikutnya di kolom C lagi (ingat, pada area C7:H8). Mungkin bisa dilihat lebih jelas disini pada bagian Range<http://b-excel.blogspot.com/2013/07/belajarvba-006-object-dalam-excel.html> . *b.* berarti, jika akan selang-seling 2, diperlukan pergerakan nomor urut cells setiap 2 bijik atau lompat per 2 cell. Artinya, nanti dibutuhkan loop dari nomor cell ke-1 sampai nomor cell terakhir di area yang dijelaskan di nomor 1, dengan lompatan (STEP) setiap 2 nomor. Loop yang bisa dimanfaatkan antara lain adalah FOR ... NEXT dengan STEP 2 (karena lompat per dua dua). Kalau lupa atau baru nyaris ingat dengan yang namanya loop FOR NEXT, bisa jalan-jalan menyegarkan diri disini<http://b-excel.blogspot.com/2013/08/belajarvba-010-perulangan-1-for-next.html> . *3.* proses menuju setiap cell yang akan diwarnai dengan proses loop FOR NEXT STEP 2 *a.* loopnya si FOR NEXT membutuhkan sebuah variabel loop. Kali ini, pokok utama yang di proses adalah nomor cells dalam suatu area range (area range yang dijabarkan di nomor 1), yaitu mulai dari nomor cells ke-1 sampai nomor cells terakhir. Artinya, dibutuhkan sebuah variabel loop yang bisa menyimpan nilai berupa bilangan bulat dari angka 1 (untuk cell nomor 1) sampai angka yang cukup banyak sebanyak jumlah cells di area tersebut. Tipe data variabel yang dibutuhkan adalah LONG karena dituntut bisa menyimpan bilangan bulat yang cukup luas rentangnya (dari 1 sampai sebanyak cells terpilih). Coretan tentang variabel dan tipe data ada disini<http://b-excel.blogspot.com/2013/07/belajarvba-004-tipe-data-variabel.html> . *b.* object range memiliki properti bernama interior. Properti interior range bisa diatur warnanya melalui properti bernama Color atau ColorIndex. Untuk kali ini, anggap saja untuk warna biru, pakai properti ColorIndex, maka nomor colorindex untuk warna biru adalah 5. Setelah tahap 1 dalam penyusunan suatu proses otomasi selesai, maka mulai tahap 2, yaitu menulis script nya. Yang perlu diingat : *"sesuatu yang pernah dibuka, jangan lupa ditutup"* Tahap 2 : menulis script berdasar karangan bebas tahap 1 0. buat blok prosedur, misal prosedur diberi nama Mewarnai. Anda lupa cara membuat blok prosedur? coba jalan-jalan kesini<http://b-excel.blogspot.com/2013/07/belajarvba-005-procedure-seri-1.html> . public sub Mewarnai() end sub 1. mulai langkah nomor *0* tahap 1 diatas sana dan diletakkan di dalam prosedur public sub Mewarnai() cells.clear 'langkah nomor 0 end sub 2. langkah nomor *1**a* tahap 1, yaitu bekerja pada suatu area range dengan blok WITH ... END WITH public sub Mewarnai() cells.clear 'langkah nomor 0 with range("c3").resize( 16 , 17 ) 'langkah nomor 1a di titik pembuka end with 'langkah nomor 1a di titik penutup end sub 3. langkah nomor *2**b* tahap 1 membutuhkan langkah *3**a* tahap 1. Nama variabel untuk langkah *3**a* misalnya adalah lNomorCells public sub Mewarnai() dim lNomorCells as long 'langkah 3a cells.clear 'langkah nomor 0 with range("c3").resize( 16 , 17 ) 'langkah nomor 1a di titik pembuka for lNomorCells=1 to .count STEP 2 'langkah nomor 2b di titik pembuka next lNomorCells 'langkah nomor 2b di titik penutup end with 'langkah nomor 1a di titik penutup end sub 4. langkah nomor *3**b* tahap 1, yaitu mewarnai cells pada nomor cell yang sesuai isi variabel lNomorCells saat itu (saat loop sampai disitu) public sub Mewarnai() dim lNomorCells as long 'langkah 3a cells.clear 'langkah nomor 0 with range("c3").resize( 16 , 17 ) 'langkah nomor 1a di titik pembuka for lNomorCells=1 to .count STEP 2 'langkah nomor 2b di titik pembuka .cells( lnomorcells ).interior.colorindex = 5 'langkah nomor 3b next lNomorCells 'langkah nomor 2b di titik penutup end with 'langkah nomor 1a di titik penutup end sub 5. selesai dah... dan hasil akhir prosedurnya adalah seperti nomor 4 tahap 2. Kalau sudah bisa menjalankan script dasar hasil tahap 2, barulah memasuki tahap 3, yaitu pengembangan. 1. misalkan merasa bahwa properti colorindex relatif susah ngatur variasi warnanya, maka bisa pakai properti color. Memilih warnanya bisa dengan fungsi RGB milik VBA. Fungsi RGB meminta inputan intensitas warna merah, ijo, biru dalm bentuk : RGB( intensitas_merah , intensitas_ijo , intensitas_biru ) Intensitasnya dari 0 sampai 255 (ada 256 tingkat intensitas) berarti, pada nomor 4 tahap 2 di baris berbunyi : .cells( lnomorcells ).interior.colorindex = 5 'langkah nomor 3b bisa diganti menjadi : (sama-sama masih warna biru dulu ya) .cells( lnomorcells ).interior.color = RGB( 0 , 0 , 255 ) 'langkah nomor 3b 2. kalau sudah praktek yang nomor 1 tahap 3 diatas dan ingin memvariasi warna supaya ndak biru do ang... a. intensitas warna merah yang tadinya konstan 0 diganti menjadi dinamis dengan : Abs( 255 - ( (lNomorCells-1) Mod 256 ) * 2 ) b. intensitas warna biru yang tadinya konstan 255 diganti menjadi dinamis dengan : 2 * ( 128 - Abs( 128 - ( (lNomorCells-1) Mod 256 ) ) ) Jadi, baris yang tadinya berbunyi : .cells( lnomorcells ).interior.color = RGB( 0 , 0 , *255* ) 'langkah nomor 3b menjadi : .cells( lnomorcells ).interior.color = _ RGB( Abs(255-((lNomorCells-1) Mod 256)*2) _ , 0 _ , *2 * ( 128 - Abs( 128 - ( (lNomorCells-1) Mod 256 ) ) )*_ ) 'langkah nomor 3b 3. membuat user bisa memilih jumlah baris dan kolom yang akan diwarnai (tetap mulai C3) beserta jarak selang-selingnya. >> Script di atas sana tadi idel untuk jumlah kolom yang ganjil. Ketika disediakan inputan oleh user tentang jumlah kolom, maka perlu dilakukan penambahan 1 kolom andaikan user mengisi nilai kolom yang genap kemudian menghapus kolom tambahan tersebut ketika sudah selesai mewarnai. >> Contoh pengembangannya bisa dilihat >> disini<https://app.box.com/s/fu7u9j8xsk7thetmc4cu> . Wassalamu'alaikum Wr. Wb., Kid. 2014-04-16 10:45 GMT+07:00 dwint ruswanto <dwint.ruswa...@gmail.com>: > > > Assalamu'alaikum wr. wb., > > Berdasarkan permintaan dari pak Heri yang lagi semangat belajar VBA, saya > mewakili moderator ingin memberikan sedikit challange kepada BeExceller. > > Kasusnya seperti gambar di bawah ini: > > > Yang diminta adalah: > Membuat warna interior cel seperti di atas dengan pola seperti papan catur > menggunakan VBA, jenis warna bebas asal tidak putih semua hehehehe :) > > Boleh menggunakan scipt apa saja, penilaian pemenang akan ditentukan oleh > moderator dan keputusan moderator tidak bisa diganggu gugat hehehehe :) > > Biar adil, Moderator dan Miss Jan Raisin tidak boleh mengikuti challenge > ini, selain itu semua BeExceller dipersilakan mengikuti challenge ini. > > Peserta selain harus menyertakan workbook <= 250 KB juga harus menerangkan > jalannya script itu di body email, hal ini untuk melatih BeExceller berbagi > ilmu dan menerangkannya kepada member yang lain. > > Buat menambah semangat, ada 2 buah buku sebagai hadiah untuk 2 pemenang, > tetapi bukan buku mengenai Excel atau VBA karena millis belum memiliki buku > sendiri. Pemenang akan diminta mengirimkan alamat pengiriman ke email owner > (bukan email milis) beserta telepon yang bisa dihubungi setelah challenge > ini ditutup dan diperoleh 2 orang pemenang. > > Batas waktu challenge 7 hari mulai sekarang, dan akan ditutup pada hari > Rabu tanggal 23 April 2014 jam 12:00 WIB. > > Tujuan dari challenge ini bukan untuk mengejar hadiahnya, tetapi sekedar > untuk melatih kemampuan mengajarkan ilmu kepada yang lain. > > Selamat berkreasi. > > Wassalam, > > -dwint- > > >