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-
>
>  
>

Kirim email ke