@DERY FEBRIAN ... terutama pada bagian terakhir tiap baris kode ...
Jadi begini. Nilai pada sel A5, A6 dan A7 pada dasarnya akan berubah sesuai perubahan yang terjadi pada kontrol ComboBox dan OptionBox. Namun ada kemungkinan nilai-nilai tersebut berubah tanpa sengaja (mungkin). Sedangkan, pada sheet tersebut, masing-masing kontrol mempunyai batas maksimum yang sudah ditentukan.
Contoh untuk ComboBox pilihan sheet yang akan dicetak, hanya ada 2 pilihan saja. Jika nilai pada sel A5 (yang merupakan sel acuan kontrol ComboBox tersebut) tidak sesuai dengan indeks daftar item pada kontrol tersebut (misalkan saja, pada ComboBox dipilih item kedua, maka pada sel A5 seharusnya bernilai 2, namun ternyata nilai yang tertera adalah 3), maka proses script akan menghasilkan kesalahan karena tidak ada sheet ketiga yang akan diproses (lihat script berikut):
...
'+-- Tetapkan sheet target.
Set xlSheet = Choose(m_lSheetIdx, Sheet2, Sheet6)
...
Karenanya, harus diperiksa dahulu nilai pada masing-masing sel acuan tersebut agar nilainya tetap berada pada range minimum dan maksimum dari masing-masing kontrol, yakni:
cboSheetIdx : Min = 1, Max = 2 (kontrol untuk memilih sheet data)
optRangeA : Min = 1, Max = 2 (kontrol untuk memilih range data jika sheet DATA A)
optColorA : Min = 1, Max = 3 (kontrol untuk memilih mode warna)
jadi, pada script yang ditanyakan:
.[A5] = Choose(((.[A5] <= 0) * 1) + ((.[A5] > 2) * 2) + 1, .[A5], 1, 2)
nilai sel A5 pada Sheet5 (CONFIG) akan ditentukan berdasarkan pilihan hasil dari operasi logika berikut:
((.[A5] <= 0) * 1) + ((.[A5] > 2) * 2) + 1
— Contoh 1. Misalkan saja tanpa sengaja nilai sel A5 diubah menjadi 5, maka dengan operasi logika di atas akan menghasilkan nilai sebagai berikut:
= Choose(((.[A5] <= 0) * 1) + ((.[A5] > 2) * 2) + 1, .[A5], 1, 2)
= Choose(((5 <= 0) * 1) + ((5 > 2) * 2) + 1, 5, 1, 2)
= Choose((FALSE * 1) + (TRUE * 2) + 1, 5, 1, 2)
= Choose((0 * 1) + (1 * 2) + 1, 5, 1, 2)
= Choose(0 + 2 + 1, 5, 1, 2)
= Choose(3, 5, 1, 2)
= Choose(3, N/A, N/A, 2)
= 2
— Contoh 2. Misalkan nilai sel A5 adalah -10, maka dengan operasi logika di atas akan menghasilkan nilai sebagai berikut:
= Choose(((.[A5] <= 0) * 1) + ((.[A5] > 2) * 2) + 1, .[A5], 1, 2)
= Choose(((-10 <= 0) * 1) + ((-10 > 2) * 2) + 1, -10, 1, 2)
= Choose((TRUE * 1) + (FALSE * 2) + 1, -10, 1, 2)
= Choose((1 * 1) + (0 * 2) + 1, -10, 1, 2)
= Choose(1 + 0 + 1, -10, 1, 2)
= Choose(2, -10, 1, 2)
= Choose(2, N/A, 1, N/A)
= 1
— Contoh 3. Misalkan nilai sel A5 adalah 1, maka dengan operasi logika di atas akan menghasilkan nilai sebagai berikut:
= Choose(((.[A5] <= 0) * 1) + ((.[A5] > 2) * 2) + 1, .[A5], 1, 2)
= Choose(((1 <= 0) * 1) + ((1 > 2) * 2) + 1, 1, 1, 2)
= Choose((FALSE * 1) + (FALSE * 2) + 1, 1, 1, 2)
= Choose((0 * 1) + (0 * 2) + 1, 1, 1, 2)
= Choose(0 + 0 + 1, 1, 1, 2)
= Choose(1, 1, 1, 2)
= Choose(1, 1, N/A, N/A)
= 1
Begitu ± logika dari script tersebut. Logika serupa juga untuk baris script:
...
.[A6] = Choose(((.[A6] <= 0) * 1) + ((.[A6] > 2) * 2) + 1, .[A6], 1, 2)
.[A7] = Choose(((.[A7] <= 0) * 1) + ((.[A7] > 3) * 2) + 1, .[A7], 1, 3)
...
Demikian, semoga dapat dipahami.