วิธีที่ 1 – สร้างนาฬิกาดิจิทัลผ่าน Excel VBA และฟังก์ชัน TEXT
ขั้นตอน:
- ไปที่ Insert > Illustrations > Shapes

- กล่องเมนู Shapes จะขึ้น
- เลือก Rounded Rectangular

- รูปสี่เหลี่ยมโค้งมุมจะถูกแทรก

- ไปที่แท็บ Developer คลิก Visual Basic

- ใน Visual Basic ไปที่ Insert > Module

- ในโมดูล ใส่ VBA Code นี้:
Sub Digi_Clock()
Range("B5") = Not Range("B5")
Do While Range("B5") = True
DoEvents
Range("B6") = Now()
Loop
End Sub
- กดปุ่ม Run สีเขียว

- ในเซลล์ B4 ใส่ TRUE กด Enter หรือ Tab

- คลิกขวาที่รูปสี่เหลี่ยมโค้งมุม เลือก Assign Macro

- VBA ถูกผูกกับรูปทรง นี่จะแสดงเวลา

- ในเซลล์ C6 ใส่สูตร TEXT:
=TEXT(B6,"hh:mm:ss AM/PM")
- แปลงเวลาใน B6 ให้เป็นรูปแบบ hh:mm:ss
- กด Enter
- ไปที่ Home > Font ปรับสี ขนาด สไตล์

- เวลาจะแสดงในรูปแบบดิจิทัล

อ่านเพิ่มเติม: วิธีสร้างนาฬิกาทำงานใน Excel
วิธีที่ 2 – ใช้ Shapes Tool และ Excel VBA ออกแบบนาฬิกาดิจิทัล
Step 1: Design Clock
- ไปที่ Insert > Illustrations > Shapes

- ในกล่อง Shapes หา Block Arrows เลือก Pentagon Arrow
- จะได้ปันลูกศรห้าเหลี่ยม

- แทรกลูกศรอีกอัน Copy-Paste
- เลือกใหม่ ไป Shape Format > Rotate > Flip Horizontal

- คัดลอกแต่ละลูกศร วางรวมเป็นวงกลม
- ใช้ Rotate ตามต้องการ

- จัดลูกศรเป็นรูป 8 (ตัวเลข 8 แบบ 7-segment)
- ปรับตัวเลขแรก: คลิกขวาแต่ละกลุ่มลูกศร ตั้งชื่อลำดับ 1 ตามไป

- Copy-Paste กลุ่มทั้งหมด ให้ได้รูปแบบ hh:mm:ss
- ตั้งชื่อ 1 ถึง 42
- เพิ่ม Oval 4 ตัว ชื่อ Point (จุดคั่นเวลา)
- เพิ่ม Rounded Rectangle 3 ตัว สำหรับปุ่ม: Start, Stop, Reset

- ได้รูปแบบหน้าจอนาฬิกาแล้ว
- ต่อไปจะใส่โค้ด VBA
Step 2: Insert Excel VBA Code
- กด ALT+F11 เปิด Visual Basic
- เพิ่มโค้ด VBA ต่อไปนี้:
Sub Digital_Clock_Autoshapes(FS As Integer, Digi As Integer)
Dim n As Integer, Spe As Shape, Shw As Worksheet
Set Shw = ActiveSheet
Dim i As Integer
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
Spe.Visible = msoCTrue
Next i
If Digi = 0 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 2 Then Spe.Visible = msoFalse
Next i
End If
If Digi = 1 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i <> FS + 1 And i <> FS + 5 Then Spe.Visible = msoFalse
Next i
End If
If Digi = 2 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 3 Or i = FS + 5 Then Spe.Visible = msoFalse
Next i
End If
If Digi = 3 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 3 Or i = FS + 4 Then Spe.Visible = msoFalse
Next i
End If
If Digi = 4 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS Or i = FS + 4 Or i = FS + 6 Then Spe.Visible = msoFalse
Next i
End If
If Digi = 5 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 1 Or i = FS + 4 Then Spe.Visible = msoFalse
Next i
End If
If Digi = 6 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 1 Then Spe.Visible = msoFalse
Next i
End If
If Digi = 7 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 3 Or i = FS + 2 Or i = FS + 4 Or i = FS + 6 Then Spe.Visible = msoFalse
Next i
End If
If Digi = 9 Then
For i = FS To FS + 6
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
If i = FS + 4 Then Spe.Visible = msoFalse
Next i
End If
End Sub
- ปิดหน้าต่าง กลับสู่สมุดงาน

- เพิ่ม VBA อีก 3 ตัว:
- สำหรับคำสั่ง Start:
Sub Start_Clock()
Dim Shw As Worksheet
Set Shw = ActiveSheet
Shw.Range("B5").Value = ""
x:
If Shw.Range("B5").Value = "Stop" Then Exit Sub
VBA.DoEvents
Call Digital_Clock_Autoshapes(1, VBA.CInt(VBA.Left(VBA.Format(Time, "HH"), 1)))
Call Digital_Clock_Autoshapes(8, VBA.CInt(VBA.Right(VBA.Format(Time, "HH"), 1)))
Call Digital_Clock_Autoshapes(15, VBA.CInt(VBA.Mid(VBA.Format(Time, "HHMM"), 3, 1)))
Call Digital_Clock_Autoshapes(22, VBA.CInt(VBA.Right(VBA.Format(Time, "HHMM"), 1)))
Call Digital_Clock_Autoshapes(29, VBA.CInt(VBA.Left(VBA.Format(Time, "SS"), 1)))
Call Digital_Clock_Autoshapes(36, VBA.CInt(VBA.Right(VBA.Format(Time, "SS"), 1)))
Dim Spe As Shape
Set Spe = Shw.Shapes("Point")
If Application.WorksheetFunction.IsEven(VBA.Second(VBA.Now)) Then
Spe.Visible = msoCTrue
Else
Spe.Visible = msoFalse
End If
GoTo x
End Sub
- โค้ดสำหรับ Stop:
Sub Stop_Clock()
Dim Shw As Worksheet
Set Shw = ActiveSheet
Shw.Range("B5").Value = "Stop"
End Sub
- โค้ดสำหรับ Reset:
Sub Reset_Clock()
Dim n As Integer, Spe As Shape, Shw As Worksheet
Set Shw = ActiveSheet
Dim i As Integer
For i = 1 To 42
Set Spe = Shw.Shapes(VBA.Format(i, "0"))
Spe.Visible = msoCTrue
Next i
Set Spe = Shw.Shapes("Point")
Spe.Visible = msoCTrue
End Sub
- คลิกขวา Start > Assign Macro

- กำหนด Start_Clock ให้ Start, Reset_Clock ให้ Reset, Stop_Clock ให้ Stop
- กด OK

- นาฬิกาดิจิทัลพร้อมปุ่มควบคุมจะปรากฏ

อ่านเพิ่มเติม: วิธีสร้างนาฬิกาแบบอนาล็อกใน Excel
ดาวน์โหลดสมุดงานฝึกหัด
บทความเกี่ยวข้อง
- วิธีสร้าง Clock Chart ใน Excel
- วิธีใช้ VBA Code สร้างนาฬิกาดิจิทัลใน Excel
รับแบบฝึกหัด Excel ขั้นสูงพร้อมเฉลยฟรี!