Pecaya-ndak-percaya, ada banyak-hal yg tidak dapat dibuat FORMULANYA di Excel. Salah satunya adalah TIME-STAMP / Stempel tanda waktu (tanggal maupun Jam).
Sampai saat ini masih banyak orang, terutama yg belum sempat mencoba-coba, masih terus mencoba-coba dengan fungsi TODAY() dan NOW(). Saking panasarannya mereka mengkoversinya menjadi TEXT dengan maksud agar nilainya memberku / berhenti, tidak ikut berjalan sesuai jam sistem.
Apa daya, esok-hari-nya ketika workbook dibuka kembali; hasil rumus
=TEXT(NOW(), "dd-mmm-yyyy hh:mm:ss")
walaupun bertpe TEXT, ternyata tidak mau membeku melainkan tetap ber-Ubah (bukan be_Rubah) menjadi jam saat workbook dibuka lagi.
Lebih kurang-ajar lagi, dia juga berubah kapan saja kalau terjadi recalculate di sheet atau sengaja anda pencet F9.
Penyebabnya tidak terlalu aneh, karena di dalam rumus yg mengkonversi data Date-Time manjadi TEXT itu
ternyata ada Fungsi yg HASILNYA berubah (volatile?) sesuai detak jam dinding anda yaitu fungsi NOW() ataupun TODAY().
Truzz bgmana dong...??
Cara menuliskan data Date-Time yg MANDEG, harus dengan data konstanta, cara menuliskan data konstanta harus anda sendiri yang BERTINDAK mengetikkan data tsb ke cells. (Excel sudah mempermudah dengan 2 kibor-short-cut Ctrl + : dan Ctrl + ; coba saja..)
Sependek apapun prosesnya, tetapi ternyata mengetikkan Ctrl + ; belum memuaskan anda, anda bilang masih belum ostosmastis... Tetapi binun' mau pakai cara apa lagi...
Untunglah kita telah terlanjur sayang sama Excel, maka Excel membalas dengan menunjukkan cara lain, yaitu
TINDAKAN KITA itu dapat direkam ataupun di CODEkan dalam bahasa yg dikenal Excel. Ada yang bilang, bahasa VBA. Katanya lagi, setiap sekumpulan perintah untuk satu hal /task tertentu bisa disebut makro, atau prosedur, atau subrutin.
Di lain waktu, Code Makro VBA yg pernah kita tulis / atau kita rekam tadi, dapat kita JALANKAN, atau kita suruh JALAN atau kita jebak dengan suatu keadaan >> agar makro JALAN SENDIRI.
Misal sehubungan dengan contoh kasus (pertanyaan pak Pungki ini): si makro akan kita jebak agar JALAN SENDIRI jika di sheet terjadi perubahan nilai di kolom B.
Di bahasa VBA, katanya, di dalam Object SHEET (maupun object2 lain) memang dikenal ada keadaan spt ini.
Di perjalanannya melayani anda, suatu object itu mempunyai beberapa titik yg disebut Event.
Sebagai contoh setiap worksheet di excel 2007 punya 9 Events.
( Jadi anda punya 9 macam "kejadian" yg diderita oleh worksheet yg dapat anda manfaatkan untuk mengotomatiskan jalannya sebuah Prosedur.)
Dalam hal Object Sheet, jika salah satu nilai cellnya berubah, maka dia "menderita" suatu EVENT tertentu (ada yang bilang nama event-nya = Event Change).
Pada saat itu jika ada serangkaian perintah yg sudah tertulis di suatu prosedur, dimana prosedur itu dikaitkan dengan Even CHANGE, maka serangkai perintah makro tsb akan JALAN SENDIRI. Atau dengan lain kata: Makro JALAN SENDIRI jika ada cell yg berubah nilainya. Jadi di sini pemakai excel XLalu diuntungkan (walaupun software-nya gratis alias b*j*k*n)
Sedangkan ISI (rangkaian perintah di dalam) makro dapat kita atur, misalnya:
di kolom A akan ditulis TIME STAMP pada cell yg sebaris dengan
cell di kolom B yg baru saja diubah nilainya.
Masih ada pekerjaan lain yaitu bagaimana caranya agar TIDAK SEMUA CELLS (yg berubah nilainya) main selonong tanpa izin MENYEBABKAN terpicunya makro tersebut (mentang-mentang EVENT CHANGE nya terjadi !)
Lha wong Kita inginnya kan hanya jika KOLOM B berubah, maka kolom A diberi TimeStamp
Selain perubahan nilai di kolom B, jangan sampai menyebabkan A dibombardir oleh nilai TimeStamp dowong !!.
Tenang... Ini hanyalah soal menyaring saja
Andai cell yg berubah ada di kolom B maka
tuliskan TimeStam di kolom A
AKhir Pengandaian
dlm bhs makronya kira kira
If target.column = 2 then
Target(1,0) = Now
End If
Dengan penyaring sederhana spt itu, Kalau ternyata cell yg berubah nilainya ada di kolom LAIN selain kolom B: tentunya perintah
di kolom A akan ditulis TIME STAMP pada cell yg sebaris dengan
cell di kolom B yg baru saja diubah nilainya.
tidak akan ter-Eksekusi karena eksekutornya sudah di cegat / disaring oleh IF sederhana tsb dan langsung dia lari ngacir menuju End If
Oiya, Prosedur Event harus ditulis di modul milik object yg event-nya sedang anda manfaatkan.
'------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Target.Cells.Count = 1 Then
If Not Target.Value = vbNullString Then
Target(1, 0).NumberFormat = "m/d/yyyy h:mm:ss"
Target(1, 0) = Now
End If
End If
End If
End Sub
'------------------------------------
cmiiw
~siti
__._,_.___
+-:: XL-mania ::::::::::::::::::::----------------------------------+
| ayooo... coba cari XL-mania di linkedin.com |
| tanggal 3-4 oktober yahoogroup akan mengalami maintenance. |
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message, melecehkan, tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan winzip jika perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/ |
+-------------------------------------------------------------------+
| Berikan testimoni di : http://www.friendster.com/xlmania atau... |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html |
+-------------------------------------------------------------------+
| Message lama ada di : |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id] |
| http://www.mail-archive.com/xl-mania@yahoogroups.com |
+-------------------------------------------------------------------+
| ayooo... coba cari XL-mania di linkedin.com |
| tanggal 3-4 oktober yahoogroup akan mengalami maintenance. |
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message, melecehkan, tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan winzip jika perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/ |
+-------------------------------------------------------------------+
| Berikan testimoni di : http://www.friendster.com/xlmania atau... |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html |
+-------------------------------------------------------------------+
| Message lama ada di : |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id] |
| http://www.mail-archive.com/xl-mania@yahoogroups.com |
+-------------------------------------------------------------------+
MARKETPLACE
.
__,_._,___
Nenhum comentário:
Postar um comentário