การใช้ excel ในบทความวันนี้ ผมขอเสนอการแสดงเวลาแบบ real time ใน worksheet ต่างๆ ซึ่งจะอาศัยการเขียนด้วย vba โดยอาศัยสูตร excel ต่างๆ ซึ่งคิดว่าจะเป็นประโยชน์กับท่านผู้อ่านสำหรับนำไปประยุกต์การใช้ excel ในด้านต่างๆ เช่น การตัดสต๊อกสินค้าที่เวลาใดๆในแต่ละวัน การเขียนคำสั่งให้ excel ทำงานที่เวลาต่างๆเป็นต้น ซึ่งผมจะนำเสนอในบทความต่อๆไปครับ วันนี้เรามาดูตัวอย่างง่ายๆของการใช้ excel แสดงเวลาแบบ real time ในเซลล์ใดๆ โดยจะดักจับเหตุการณ์ Ontime สำหรับการสั่งให้ฟังก์ชันของ excel ปรับปรุงเวลาอยู่ตลอดเวลา โดยฟังก์ชัน Ontime จะมีรูปแบบของสูตร excel ดังนี้ครับ
.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
เมื่อ
EarliestTime คือค่าเวลาที่เราต้องการให้กระบวนการใดๆของเราทำงาน
Procedure คือกระบวนการใดๆที่เราต้องการให้ทำงานเมื่อถึงเวลาที่กำหนด
LatestTime คือค่าเวลาสุดท้ายที่เราต้องการให้กระบวนการใดๆทำงาน
Schedule คือ การกำหนดสำหรับการเรียกใช้เหตุการณ์ Ontime มีค่าเป็น true หากต้องการเรียกใช้เหตุการณ์ Ontime มีค่าเป็น false หากต้องการยกเลิก เหตุการณ์ Ontime
เอาหล่ะครับ หากผมต้องการให้แสดงเวลาแบบ real time ที่มีรูปแบบเป็น h:mm:ss ในเซลล์ B1 ของ worksheet ชื่อ Sheet1 เราสามารถเขียนกระบวนการทำงานนี้โดยใช้วางฟังก์ชันไว้ที่โมดูลใดๆได้ดังนี้ครับ
Sub mytime()
Worksheets(“Sheet1”).Cells(1,2).Value = Format(Now,”h:mm:ss”)
End Sub
เมื่อ Now คือสูตร excel ที่ใช้แสดงเวลาในปัจจุบัน
จากนั้นหากเราต้องการให้แสดงเวลาตั้งแต่ตอนเปิดไฟล์ excel เราต้องเรียกกระบวนการ mytime ตั้งแต่เกิดเหตุการณ์ เปิดไฟล์ excel ซึ่งจะถูกกำหนดในฟังก์ชัน Workbook_Open โดยเราจะเขียนโค้ดโปรแกรมในฟังก์ชัน Workbook_Open ซึ่งอยู่ในส่วนของ ThisWorkbook ได้ดังนี้
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("0:0:1"), "mytime"
End Sub
การที่จะให้กระบวนการ mytime ทำงานทุกๆ 1 วินาที จะต้องปรับแก้กระบวนการ mytime ให้เรียกตัวเองอยู่เสมอ จึงต้องปรับแก้ไขดังนี้
Sub mytime()
Worksheets(“Sheet1”).Cells(1,2).Value = Format(Now,”h:mm:ss”)
Application.OnTime Now + TimeValue("0:0:1"), "mytime"End Sub
สุดท้ายครับเราต้องยกเลิกการดักจับเหตุการณ์ Ontime ก่อนที่จะปิดไฟล์ excel ครับ ซึ่งเราจะเขียนโปรแกรมยกเลิกการดักจับเหตุการณ์ Ontime ในเหตุการณ์ก่อนปิดไฟล์ excel ซึ่งจะใช้ฟังก์ชัน Workbook_BeforeClose ซึ่งอยู่ในส่วนของ ThisWorkbook ได้ดังนี้
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime Now + TimeValue("0:0:1"), "mytime", False
End Sub
เรามาดูผลการทำงานของกระบวนการแสดงผลเวลาแบบ real time ในการใช้ excel ของเรากันเลยครับ
ภาพที่ 1 ฟังก์ชัน excel ในส่วนของ ThisWorkbook
ภาพที่ 2 กระบวนการ mytime ในส่วนของ Module1
ภาพที่ 3 การแสดงเวลาแบบ Real Time ใน excel
หากท่านผู้อ่านดำเนินการมาถึงขั้นตอนนี้ เมื่อท่านทดลองเปิดไฟล์ excel ดังกล่าวขึ้นมาท่านจะพบเวลาในเซลล์ B1 แสดงแบบ Real Time ครับ ก็ดูเก๋ไปอีกแบบนะครับ หากเรานำไปประยุกต์ใช้กับงานอื่นๆก็คงจะไม่ยากมากนัก ก็เพราะตอนนี้เราสามารถกังจับและควบคุมเวลาใน excel ของเราได้แล้วนั่นเองครับ แล้วมาพบกันในบทความเกี่ยวกับการใช้ excel หรือ vba excel ได้ใหม่นะครับ สวัสดีครับ