Tentang penggunaan fungsi CLng.
CLng adalah fungsi konversi tipe data menjadi bertipe data Long (bilangan
bulat pada interval angka tertentu yang lebih lebar dari pita tipe data
integer)

Excel pada dasarnya selalu berusaha mengkonversi suatu nilai data menjadi
bertipe data dasarnya. Jika nilai data terdiri dari angka seluruhnya, maka
akan diubah menjadi bertipe numerik (umumnya double) dan sebagainya.
Contoh, jika ada suatu nilai data berbunyi :
BELAJAR bertipe string, maka Excel akan mengubahnya menjadi BELAJAR bertipe
string
12345 bertipe string, maka Excel akan mengubahnya menjadi 12345 bertipe
double
45678 bertipe long, maka Excel akan mengubahnya menjadi 45678 bertipe double
41151 bertipe datetime, maka Excel akan mengubahnya menjadi bertipe double

Kejadian diatas tidak berlaku untuk tipedata string jika format cell yang
dituju adalah Text.
Misal, cell i33 diset formatnya berupa Text, maka ketika ada suatu nilai
data berbunyi :
BELAJAR bertipe string, Excel membacanya sebagai data bertipe string, dan
akan ditulis ke cell i33 sebagai string, lalu diformat Text
12345 bertipe string, Excel membacanya sebagai data bertipe string, dan
akan ditulis ke cell i33 sebagai string, lalu diformat Text
45678 bertipe long, Excel membacanya sebagai data bertipe double, dan akan
ditulis ke cell i33 sebagai data bertipe double, lalu diformat Text
41151 bertipe datetime, Excel membacanya sebagai data bertipe double, dan
akan ditulis ke cell i33 sebagai data bertipe double, lalu diformat Text

*Pada kasus ini :*
1. Berdasar kaidah database, maka tabel data pada kasus ini tidak memenuhi
kaidah database. Hal ini disebabkan oleh adanya 2 tipe data dalam sebuah
kolom.
Jika terlalu sulit untuk seluruh kolom data, minimal kolom kuncinya lebih
dulu (kolom X).
Kolom ini berisi tipedata string (record pertama) dan tipe data numerik
(selain record pertama)

2. Pada bentuk struktur output, ada sebuah cell input oleh user (i33) yang
diset formatnya sebagai Text (masih ingat kejadian tentang Excel berusaha
mengkonversi tipe data diatas tadi ya).

3. Pada bentuk struktur output, ada sebuah cell berisi formula memanfaatkan
fungsi lookup dengan lookup value adalah isian user (cell i33).
Karakteristik dasar lookup oleh excel (baik melalui VLookUp, HLookUp,
LookUp, Match), selalu berdasar tipe data lookup value.
Jika i33 diisi data bertipe numerik, maka proses lookup akan memanfaatkan
kolom X yang bertipe numerik saja.
Jika i33 diisi data bertipe string, maka proses lookup akan memanfaatkan
kolom X yang bertipe string saja.

4. Tentang baris kode :
     Range("i33").Value = CLng(Right(.Value, 7))
>> A. hasil dari fungsi Right adalah bertipe string. Format cell i33 yang
berupa Text, akan menyebabkan Excel tidak melakukan konversi data dari
string menjadi double karena hasil fungsi Right yang bertipe data string.
Padahal native-nya, tipe data kolom X adalah bertipe numerik.
>> B. dipilih menggunakan CLng karena format cell i33 adalah Text (lihat
nomor 2) dan native-nya data kolom X adalah bertipe numerik.
Akibatnya, ketika user double click di record pertama, hasilnya mestinya
error value.

Jadi, agar prosedur bisa berlaku untuk seluruh record, maka formula di
record pertama kolom X diubah agar menghasilkan tipe data numerik.
Formula yang ada di record pertama kolom X memanfaatkan fungsi concatenate
yang menghasilkan tipe data string.
Dengan mengubah formulanya menjadi : (ubah dulu format cellnya menjadi
berformat general)
=CONCATENATE(F9,F10,F11)+0
maka tipe data kolom X akan seluruhnya bertipe numerik.

Wassalam,
Kid.

2012/8/30 hendrik karnadi <[email protected]>

> **
>
>
> Ini memang langkah Master.
> Sebelumnya saya coba buat tanpa Cancel = True namun programnya looping
> terus sampai error.
>
> Mr Kid, mau nanya mengenai  CLng(Right(.Value, 7)), mengapa kalau CLng 
> dihilangkan
> hasilnya menjadi error, padahal kan tujuh angka tsb (dari kanan) sudah
> merupakan bilangan bulat....
>
> Mohon pencerahannya.
>
> Terima kasih.
>
> Salam,
> Hendrik Karnadi
>
>
>   ----- Forwarded Message -----
> *From:* Kid Mr. <[email protected]>
> *To:* [email protected]
> *Sent:* Thursday, 30 August 2012, 16:26
> *Subject:* Re: [belajar-excel] Isian Bon sesuai dengan baris yang di klik
>
>
> Coba ubah isi prosedur event worksheet before double click menjadi :
>     With Target   'pada object range bernama target
>         If .Count = 1 Then         'cek jumlah cell yang di double click
> (hehehe... butuh gak ya?)
>             If .Column = 35 Then   'cek indeks kolom yang di double click
>                 Range("i33").Value = CLng(Right(.Value, 7))    'ganti isi
> cell i33
>                 Call cetak         'panggil prosedur cetak
>                 Cancel = True      'batalkan proses double click
>             End If                 'akhir blok cek indeks kolom
>         End If                     'akhir blok cek jumlah cell yang di
> double click
>     End With                       'akhir blok pada object range bernama
> target
>
> Wassalam,
> Kid.
>
> 2012/8/30 Kelik Pitoyo <[email protected]>
>
> **
>
>   Selamat Siang,
> Yth. Be Exceller,
>
> Sebelumnya saya ucapkan banyak terima kasih dan mohon maaf bila banyak
> code /makro dan rumus yang saya ambil dari temen-temen.
> Sebelumnya saya pernah posting hal ini namun dengan permasalahan berbeda,
> bila saya menginginkan kolom "AI" diklik 2x maka akan muncul print preview
> form bon BBM,
> Permasalahan yang saya hadapi isian bon BBM belum sesuai dengan baris yang
> saya klik untuk di cetak. (harus manual mengganti no BON)
> Bagaimana pemecahannya, mohon pencerahannya.
>
> Terima kasih sebelumnya,
> Salam,
> kelik
>
>
>
>
>   
>

Kirim email ke