mantap.. penjelasan Mr. Kid membuka wawasan baru bagi saya, ternyata betul
ada perubahan pada cell akibat event lain yang berakibat over flow..
semoga ilmunya semakin berkah.

untuk Pak Hendrik, terima kasih juga atas atensinya.

wassalam,

-dwint-

Pada 30 Agustus 2012 15:32, Kid Mr. <[email protected]> menulis:

> **
>
>
> Jika errornya adalah overflow, berarti ada sesuatu yang melebihi batasnya.
> Nah apa yang melebihi batas tersebut tidak tampak secara langsung dari
> script mas Dwint.
>
> 1. Kalau script tersebut di salin ke sebuah workbook baru dan cell B19
> diisi Hard Cover atau cell B20 diisi YA kira-kira muncul error gak ya ?
> 2. Coba juga jika sebelum baris IF pertama disisipi :
>                    application.enableevents=false
> kemudian setelah endif terakhir disisipi :
>                    application.enableevents=true
>
> properti enableevents akan meng-turn on/off-kan ijin terpicunya dan
> dijalankannya prosedur-prosedur event.
> Coba perhatikan di script mas Dwint. Setelah proses cek, maka ada baris
> perintah untuk mengubah nilai sebuah cell.
> Hal ini akan memicu dijalankannya prosedur event worksheet change akibat
> cell yang berubah nilainya. Padahal yang mengubah adalah prosedur event
> juga.
> Jadi, ketika cell B20 diubah user isinya dari kata Tidak menjadi Ya, maka
> prosedur event change dijalankan dengan target berisi cell B20.
> Ketika event ini diproses, ada sebuah perintah mengubah nilai cell B24.
> Maka dengan berubahnya nilai di B24, event change jalan lagi tapi dengan
> target berisi cell B24. Padahal event change yang tadi belum selesai
> dikerjakan.
>
>
> Tentang prosedur event worksheet change milik mas Dwint.
> Tampaknya mas Dwint ingin melakukan pengecekan terhadap 2 cells, yaitu
> terhadap isi cell B19 atau cell B20.
> Perlakuan atas berubahnya nilai di B19 berbeda dengan berubahnya nilai B20.
>
> Coba susun antara lain sebagai berikut :
> Private Sub Worksheet_Change(ByVal Target As Range)
>    application.enableevents=false
>
>     If Target.Cells.Count = 1 Then
>         If Target.Column = 2 Then
>            if Target.Row = 19 then
>
>               If Target.Value = "Hard Cover" Then
>                  Range("B22:B23").Value = "Ya"
>               Else
>                 Range("B22:B23").Value = "Tidak"
>               End If
>            elseif Target.Row = 20 then
>
>               If Target.Value = "Ya" Then
>                 Range("B24").Value = "Ya"
>               Else
>                 Range("B24").Value = "Tidak"
>               End If
>            End If
>         End If
>     End If
>    application.enableevents=true
> End Sub
>
> Karena object range bernama target digunakan berulang kali, maka bisa
> memanfaatkan klausa With, dan seluruh kata target bisa dihapus
> (langsung pakai titik saja -- contoh untuk baris pertama -- terapkan untuk
> kata target lainnya di baris lainnya)
>    with target
>     If .Cells.Count = 1 Then
>            'baris lainnya
>
>    end with
>
> Bisa juga menggunakan blok kondisi Select Case .... End Select
> Private Sub Worksheet_Change(ByVal Target As Range)
>    application.enableevents=false
>
>    with target
>     If .Cells.Count = 1 Then
>         If .Column = 2 Then
>            select case .Row
>            case 19
>               If .Value = "Hard Cover" Then
>                  Range("B22:B23").Value = "Ya"
>               Else
>                 Range("B22:B23").Value = "Tidak"
>               End If
>            case 20
>               If .Value = "Ya" Then
>                 Range("B24").Value = "Ya"
>               Else
>                 Range("B24").Value = "Tidak"
>               End If
>            End select
>         End If
>     End If
>    end with
>
>    application.enableevents=true
> End Sub
>
> Proses perbandingan seperti : (yang merah)
>
>   If Target.Value = "Ya" Then
> bisa jadi memicu error runtime karena type mismatch (kalau gak salah error
> runtime 13) ketika nilai dalam object range bernama target berupa errorvalue
> Tapi untungnya jarang user input berupa nilai error value kan... (kasus
> ini memang yang dibandingkan adalah hasil input user di target)
> Ketika perbandingan dilakukan terhadap sebuah hasil formula di cell lain,
> maka error tersebut bisa mungkin muncul.
> Salah satu solusinya adalah dengan menyusun formula dalam worksheet yang
> tidak menghasilkan error value.
>
> Wassalam,
> Kid.
>
>
> 2012/8/30 dwint ruswanto <[email protected]>
>
>> **
>>
>>
>> assalamu'alaikum,
>>
>> para master yang saya hormati,
>>
>> saya membuat event change terhadap suatu cell, pada saat *cell taget
>> hanya 1* tidak timbul masalah, tetapi saat saya menambah 1 cell target
>> lagi maka timbul Error,
>>
>> berikut codingnya
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>>     If Target.Cells.Count = 1 Then
>>         If Target.Row = 19 And Target.Column = 2 Then
>>             If Target.Value = "Hard Cover" Then
>>                 Range("B22:B23").Value = "Ya"
>>                 Else
>>                 Range("B22:B23").Value = "Tidak"
>>             End If
>>         End If
>>     End If
>>
>>     If Target.Cells.Count = 1 Then
>>         If Target.Row = 20 And Target.Column = 2 Then
>>             If Target.Value = "Ya" Then
>>                 Range("B24").Value = "Ya"
>>                 Else
>>                 Range("B24").Value = "Tidak"
>>             End If
>>         End If
>>     End If
>> End Sub
>>
>> di mana letak kesalahan yang harus saya perbaiki?
>>
>> wassalam,
>>
>> -dwint-
>>
>>
>  
>

Kirim email ke