Tecnologia, programação e muito Visual FoxPro.

segunda-feira, 10 de outubro de 2011

Re: ]] XL-mania [[ Mengisi Data Time,Date secara otomatis

 

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



2011/10/8 Pungki BERLIANTO <p.berlianto@pciltd.com.sg>

Dear Para suhu EXEL Mania,

 

Saya ada pertanyaan tentang bagaimana cara mengisi data Time,Date (kolom A) terakhir saat kita memasukkan data terakhir di kolom sebelahnya (Kolom B).

Lebih jelasnya saya sertakan pada attachment file.

 

Terima kasih atas Pertolongan

 

  

 

__._,_.___
Recent Activity:
+-:: 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              |
+-------------------------------------------------------------------+
MARKETPLACE

Stay on top of your group activity without leaving the page you're on - Get the Yahoo! Toolbar now.

.

__,_._,___

Nenhum comentário:

Arquivo do blog