Terima kasih Mr. Kid atas pencerahannya.
Seingat saya, sejak saya bergabung dengan milis ini hanya 2 Master yang pernah 
menggunakan CLng, yoitu Mbak Siti dan Mr. Kid.

Salam,
Hendrik Karnadi



________________________________
 From: Kid Mr. <[email protected]>
To: [email protected] 
Sent: Thursday, 30 August 2012, 19:27
Subject: Re: Fw: [belajar-excel] Isian Bon sesuai dengan baris yang di klik
 

  
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