Hai Udin,
Sebaiknya disempatkan mempelajari tentang datatype sampai ke
karakteristiknya.
Variabel Nilai berdatatype variant. Oleh sebab itu bisa berisi data bertipe
text (ketika cell berisi data text) atau data numerik (ketika cell berisi
bilangan) menurut baris :
Nilai = sel.Value
Karena tipedata Nilai adalah variant, maka baris :
If Nilai > 7 Then
tidak akan menimbulkan error walau isi dari nilai adalah data bertipe text,
karena disimpan dalam variabel nilai bertipe variant.
Andai.... andai loh ya....
1. variabel Nilai bertipe string (misal ada baris diatasnya berbunyi Dim
Nilai as string, maka baris IF ini akan error 13 juga
2. variabel Nilai bertipe numerik seperti Long, Integer, Double, Single
atau bahkan Date, maka ketika di baris kode Nilai=sel.value ternyata isi
cell adalah data teks (bertipe text atau string), maka akan muncul error 13
juga.
Jadi, error 13 itu apa sih ?
Penjelan dari VB nya sudah lengkap, yaitu : *type mismatch*
Sekarang, baris yang dikuning (karena baris IF Nilai > 7 Then tidak
menimbulkan error 13 dan isi cell adalah teks)
SumKuning = SumKuning + Nilai - 7
Maka akan terjadi proses matematis penjumlahan dan pengurangan antara data
teks dengan data numerik.
Ini yang menyebabkan munculnya error 13.
Coba bayangkan, bisakah anda mendapatkan hasil dari proses matematis ini :
1000 + Kudaku lari kencang - 7 = ....
Berapa isi titik-titik diatas ?
Error 13 pada kasus ini tidak ada kaitannya dengan addin apapun.
Jadi, bagaimana caranya supaya gak error 13 lagi ?
Perhatikan bagian :
For Each sel In Selrow.Cells
Select Case sel.Interior.Color
Case 65535 ' Kuning
SumKuning = SumKuning + sel.Value
Case 12611584 ' Biru
Nilai = sel.Value
If Nilai > 7 Then
SumKuning = SumKuning + Nilai - 7
Nilai = 7
End If
SumBiru = SumBiru + Nilai
Case 5287936 'Hijau
Nilai = sel.Value
If Nilai > 7 Then
SumKuning = SumKuning + Nilai - 7
Nilai = 7
End If
SumHijau = SumHijau + Nilai
End Select
' untuk menyimpan posisi sel terakhir tiap baris
Set SelAkhir = sel
Next
Ubah menjadi :
For Each sel In Selrow.Cells
Nilai = sel.value
if isnumeric( nilai ) then
nilai = cdbl( nilai )
Select Case sel.Interior.Color
Case 65535 ' Kuning
'SumKuning = SumKuning + sel.Value
SumKuning = SumKuning + nilai
Case 12611584 ' Biru
'Nilai = sel.Value
If Nilai > 7 Then
SumKuning = SumKuning + Nilai - 7
Nilai = 7
End If
SumBiru = SumBiru + Nilai
Case 5287936 'Hijau
'Nilai = sel.Value
If Nilai > 7 Then
SumKuning = SumKuning + Nilai - 7
Nilai = 7
End If
SumHijau = SumHijau + Nilai
End Select
' untuk menyimpan posisi sel terakhir tiap baris
endif
Set SelAkhir = sel
Next
Wassalam,
Kid.
On Fri, Apr 13, 2012 at 08:46, KSM Absolute - Udin <[email protected]>wrote:
> **
>
>
> sebagian data adalah angka sebagian angka adalah huruf, sebelumnya tidak
> eror tapi setelah saya instal addin datepicker muculu eror tersebut. addin
> tsb sudah saya uninstall tp tetap saja muncul "run time error '13' type
> mismatch".
> baris code yg menjadi kuning adalah
>
> Case 5287936 'Hijau
> Nilai = sel.Value
> If Nilai > 7 Then
> SumKuning = SumKuning + Nilai - 7
> Nilai = 7
> End If
> SumHijau = SumHijau + Nilai
> End Select
>
> ------------------------------
> *Dari:* Kid Mr. <[email protected]>
> *Kepada:* [email protected]
> *Dikirim:* Kamis, 12 April 2012 18:41
> *Judul:* Re: [belajar-excel] run time error 13 type mismatch
>
>
> Coba cek isi dari range k4:As300 memiliki tipe data apa saja.
>
> Salam
> Kid
>
> On Thu, Apr 12, 2012 at 16:55, KSM Absolute - Udin <[email protected]>wrote:
>
> **
>
> Sub sumcolor(daerah As Range)
> Dim Selrow As Range
> Dim sel As Range
> Dim SelAkhir As Range
> Dim SumKuning, SumBiru, SumHijau As Double
>
> For Each Selrow In daerah.Rows
> SumKuning = 0
> SumBiru = 0
> SumHijau = 0
>
>
>
>