hehehehe...
gitu ya...
itu sebabnya mending di non-aktifkan ya...

kalau user mengetik nama saya 'Kid' gitu, apa terus ditanyakan oleh si
event change ? gak juga kan, karena sudah ditanyakan lebih dulu oleh si
data validation.
Jadi, alasan bahwa yang diisi user tidak ada dalam daftar tidak bisa
diterima.

cobe deh dilihat di data validation setting-nya.
disana, opsi ignore blank dicentang. itu sebabnya baris-baris yang di-non
aktifkan itu ditambahkan dan aktif.

kalau opsi ignore blank tidak dicentang, trus isian cells yang ada isinya
dihapus dengan backspase di formula bar, pasti sudah di-stop oleh si data
validation.
sedangkan kalau user tekan keyboard tombol delete atau klik kanan cells
pilih clear contents, diperbolehkan oleh data validation, sehingga cukup
tulis spasi di sebelahnya tanpa ada pertanyaan.

Susunan script menjadi :
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngSave As Range
    With Target
        If .Count = 1 Then
            If .Address = "$C$5" Then
                Set rngSave = .Offset(0, -1)
                Application.EnableEvents = False
                If Len(.Value) = 0 Then
                    rngSave.Value = " "
                ElseIf .Value <> rngSave.Value Then
                    If MsgBox("Ganti isinya jadi '" & .Value & "' ?",
vbQuestion + vbOKCancel, .Offset(0, -1).Text) = vbOK Then
                        rngSave.Value = .Value
                    Else
                        .Value = rngSave.Value
                    End If
                End If
                Application.EnableEvents = True
            End If
        End If
    End With
End Sub

Yang dilatar kuning adalah pengubahannya.
Blok IF yang di dalam blok IF Msgbox tinggal penulisan ke lokasi
penyimpanan nilai yang terakhir diisi user.
Baris set environment aplikasi berupa pengaturan on off event enable
dipendah ke luar, yaitu ke blok terdalam yang akan ada proses penulisan
nilai ke suatu cells agar event change tidak ter-trigger berulang kali (ini
yang dimasalahkan oleh mas Nang tempo hari).

So,
otomasi itu perlu disertai antisipasi perilaku user yang dapat diduga dan
bukan sekadar berdasar kewajaran SOP pengisian.
Pada contoh di atas sudah ada antisipasi perilaku user yang melakukan copy
paste atau copy paste values di banyak cells sekaligus,
tetapi belum ada antisipasi bila copas values sebuah nilai yang tidak ada
dalam daftar, juga ketika data validation dibuang (delete cells [bukan
Clear Contents]) atau delete atau insert entire row maupun entire column.
Kalau delete sheet sih jelas lah, gak usah diantisipasi karena si user
sedang emosi atau sedang gak sehat. Apalagi kalau delete workbook atau
delete MSOffice atau malah delete computer.

Untuk antisipasi yang lainnya (termasuk beberapa yang disebut di atas)
tidak disertakan karena pokok utama pada kasus ini adalah memunculkan
msgbox ketika isian cells berubah dan bisa me-roll back (auto meng-undo)
kalau user ingin membatalkannya.

Regards,
Kid



2017-08-15 11:06 GMT+07:00 hendrik karnadi [email protected]
[belajar-excel] <[email protected]>:

>
>
> Maaf, salah menyimak Mr. Kid...tadi saya pikir baris di Worksheet (baris
> 1-4).
> Lagi2 menurut saya (mudah2an ga salah)...krn ga ada pilihan " " dalam Data
> Validationnya.
> Tetapi kalo usernya "nekat" menekan tombol Del....maka baris2 VBA yang
> berwarna kuning itu tidak boleh dihilangkan krn kalau dihilangkan kata yang
> tercantum dalam formatnya ("Jenis Fluida") ikut hilang.
>
> Salam,
> HK
>
>
> ------------------------------
> On Tuesday, August 15, 2017, 10:35:50 AM GMT+7, 'Mr. Kid'
> [email protected] [belajar-excel] <[email protected]> wrote:
>
>
>
>
> Yang bagian di latar kuning Pak,
> Private Sub Worksheet_Change(ByVal Target As Range)
>     Dim rngSave As Range
>     With Target
>         If .Count = 1 Then
>             If .Address = "*$C$5*" Then
>                 Set *rngSave = .Offset(0, -1)*
>                 If .Value <> rngSave.Value Then
>                      Application.EnableEvents = False
>                     If MsgBox("Ganti isinya jadi '" & .Value & "' ?",
> vbQuestion + vbOKCancel, .Offset(0, -1).Text) = vbOK Then
>                         'If Len(.Value) = 0 Then
>                         '    rngSave.Value = " "
>                         'Else
>                              rngSave.Value = .Value
>                         'End If
>                     Else
>                         *.Value = rngSave.Value*
>                     End If
>                      Application.EnableEvents = True
>                 End If
>             End If
>         End If
>     End With
> End Sub
>
> Apa kegunaan baris itu jika di-non aktifkan ?
> Apa kegunaan baris itu jika tetap aktif ?
>
> Seingat saya, saya membuat baris itu dalam keadaan aktif.
> Berartikan Pak HK yang mengubahnya menjadi non aktif... Mestinya ada
> alasannya kan ya... mbok ya di-share di milis gitu loh...
>
>
> Regards,
> Kid
>
>
>
>
> 2017-08-15 10:06 GMT+07:00 hendrik karnadi [email protected]
> [belajar-excel] <[email protected]>:
>
>
>
> Hahaha, ga ngerti Mr. Kid karena baik soal maupun jawabannya bukan saya
> yang buat'
>
> Salam,
> HK
>
> ------------------------------
> On Monday, August 14, 2017, 3:52:28 PM GMT+7, 'Mr. Kid' [email protected]
> [belajar-excel] <[email protected] > wrote:
>
>
>
>
> Kenapa ada baris di-non aktifkan ?
>
>
> 2017-08-14 15:07 GMT+07:00 hendrik karnadi [email protected]
> [belajar-excel] <[email protected] >:
>
>
>
> Hahaha...ternyata formatnya.
> Makasih Mr. Kid.
>
> Salam,
> HK
>
> ------------------------------
> On Monday, August 14, 2017, 2:50:12 PM GMT+7, 'Mr. Kid' [email protected]
> [belajar-excel] <[email protected] > wrote:
>
>
>
>
> hmmm....
>
> Kenapa ada baris yang di-non aktifkan ?
> Apakah baris tersebut tidak dipakai atau tidak berguna ?
>
> Untuk bunyi Jenis Fluida, silakan lihat format cells tab Number
>
> Regards,
> Kid
>
>
>
>
>
>
> 2017-08-14 14:28 GMT+07:00 hendrik karnadi [email protected]
> [belajar-excel] <[email protected] >:
>
>
>
> Mr Kid, boleh ikutan kan ?
>
> Setelah Even di bawah ini dijalankan ( isi sel C5 diubah dan perubahan
> dibatalkan ("Cancel) ),
>
> Private Sub Worksheet_Change(ByVal Target As Range)
>     Dim rngSave As Range
>     With Target
>         If .Count = 1 Then
>             If .Address = "*$C$5*" Then
>                 Set *rngSave = .Offset(0, -1)*
>                 If .Value <> rngSave.Value Then
>                      Application.EnableEvents = False
>                     If MsgBox("Ganti isinya jadi '" & .Value & "' ?",
> vbQuestion + vbOKCancel, .Offset(0, -1).Text) = vbOK Then
>                         'If Len(.Value) = 0 Then
>                         '     rngSave.Value = " "
>                         'Else
>                              rngSave.Value = .Value
>                         'End If
>                     Else
>                         *.Value = rngSave.Value*
>                     End If
>                      Application.EnableEvents = True
>                 End If
>             End If
>         End If
>     End With
> End Sub
>
> maka sel B5 (.offset(0, -1)) akan "tetap berisi" kata "Oil" (di formula
> bar) padahal yang tampak pada sel adalah "Jenis Fluida" seperti tampak pada
> gambar berikut ini:
>
> [image: Inline image]
>
> Pertanyaannya :
> - Mengapa sel B5 bisa terisi dengan 2 kata "Oil" dan "Jenis Fluida" ?
>
> Mohon penjelasannya Mr. Kid.
> Terima kasih.
>
> Salam,
> HK
>
>
> ----- Forwarded Message -----
> *From:* Tio Adi Bayu Adjie [email protected] [belajar-excel] <
> [email protected] >
> *To:* "[email protected] " <[email protected] >
> *Sent:* Monday, August 14, 2017, 11:42:18 AM GMT+7
> *Subject:* Re: [belajar-excel] Code VBA dengan Worksheet _Change
>
>
>
> Terima kasih Mr. Kid, sudah berhasil. Semoga Allah membalas kebaikannya.
> Amiin...
> ------------------------------
> *From:* [email protected] <[email protected] > on
> behalf of 'Mr. Kid' [email protected] [belajar-excel] <
> [email protected] >
> *Sent:* Friday, August 11, 2017 7:18:03 PM
> *To:* BeExcel
> *Subject:* Re: [belajar-excel] Code VBA dengan Worksheet _Change [1
> Attachment]
>
>
>
> Hai Tio,
>
> Coba file terlampir. Butuh cells penyimpan data terakhir yang diisi.
>
> Regards,
> Kid
>
>
>
>
>
>
> 2017-08-07 10:30 GMT+07:00 Tio Adi Bayu Adjie [email protected]
> [belajar-excel] <[email protected] >:
>
>
>
> Dear Be-Exceller,
>
>
>
> Bagaimana code VBA dengan menggunakan *Private Sub Worksheet_Change(ByVal
> Target As Range)**.* Jadi kalau isian “jenis fluida” di ganti maka
> nilainya kembali ke nilai sebelumnya kalau salah input.
>
>
>
> Misalnya sebelumnya nilai di Jenis Fluida nilainya "Oil”,  kemudian kita
> ganti nilainya dengan nilai "Coolant", maka akan keluar peringatan "Anda
> merubah nilai ini, apakah anda yakin ? Kalau yakin, nilai jadi nilai baru
> (Coolant). Kalau tidak yakin (dengan klik no), nilai akan kembali ke nilai
> sebelumnya (Oil).
>
>
>
> Untuk lebih jelasnya, bisa dilihat di file terlampir.
>
>
>
> Thank you
>
>
>
> *Best Regards,*
>
> Tio Adi Bayu Adjie
>
>
>
>
>
> .
>
> [image: Image removed by sender.]
> [image: Image removed by sender.]
>
>
>
>
>
> 
>

Kirim email ke