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