Setelah sebelumnya saya telah membuat jam digital pada worksheet. Kali ini saya coba buat jam analog yang ditampilkan pada worksheet.
Baca juga : Membuat jam digital di worksheet
vba.co.id
Pada prinsipnya untuk membuat jam analog ini masih sama dengan cara membuat jam digital, hanya saja pada jam analog ini ditambahkan beberapa script untuk membuat sebuah Shape berbentuk garis yang nantinya digunakan sebagai penunjuk jam, menit dan detik.
Hasil dari jam analog bisa dilihat dibawah ini.

Untuk membuat jam analog seperti ini, buat 2 tombol yaitu untuk Start dan juga tombol Stop
Simpan script ini pada tombol Star
Sub BtPlay_Click()
On Error Resume Next
'Delete Jarum
Sheet1.Shapes.Range(Array("sh3", "mh3", "hh3")).Delete
x1 = 250
x2 = 250
y1 = 155
Sy2 = 60
S1y2 = 250
My2 = Sy2 + 20
M1y2 = S1y2 - 20
Hy2 = Sy2 + 40
H1y2 = S1y2 - 40
'Detik
With Sheet1.Shapes.AddLine(x1, y1, x2, Sy2).Line
.Parent.Name = "sh1"
.ForeColor.RGB = RGB(89, 89, 89)
End With
With Sheet1.Shapes.AddLine(x1, y1, x2, S1y2).Line
.Parent.Name = "sh2"
.Visible = False
End With
With Sheet1.Shapes.Range(Array("sh1", "sh2")).Group
.Name = "sh3"
.Shadow.Type = msoShadow21
End With
'Menit
With Sheet1.Shapes.AddLine(x1, y1, x2, My2).Line
.Parent.Name = "mh1"
.Weight = 1
.ForeColor.RGB = RGB(49, 134, 155)
.EndArrowheadStyle = msoArrowheadTriangle
End With
With Sheet1.Shapes.AddLine(x1, y1, x2, M1y2).Line
.Parent.Name = "mh2"
.Visible = False
End With
With Sheet1.Shapes.Range(Array("mh1", "mh2")).Group
.Name = "mh3"
.Shadow.Type = msoShadow21
End With
'Jam
With Sheet1.Shapes.AddLine(x1, y1, x2, Hy2).Line
.Parent.Name = "hh1"
.Weight = 1.25
.ForeColor.RGB = RGB(0, 176, 80)
.EndArrowheadStyle = msoArrowheadTriangle
End With
With Sheet1.Shapes.AddLine(x1, y1, x2, H1y2).Line
.Parent.Name = "hh2"
.Visible = False
End With
With Sheet1.Shapes.Range(Array("hh1", "hh2")).Group
.Name = "hh3"
.Shadow.Type = msoShadow21
End With
Call JalanJam
End Sub
Dan simpan script dibawah ini pada tombol Stop
Sub BTStop_Click()
On Error Resume Next
Application.OnTime Now + TimeValue("00:00:01"), "JalanJam", , False
End Sub
Setelah itu simpan juga script ini untuk menjalankan Jamnya
Sub CurrentTime()
On Error Resume Next
SecHand = Second(Now()) * 6
Minhand = Minute(Now()) * 6
HrHand = (Hour(Now()) * 30) + Int(Minhand / 10)
Sheet1.Shapes("sh3").Rotation = SecHand
Sheet1.Shapes("mh3").Rotation = Minhand
Sheet1.Shapes("hh3").Rotation = HrHand
End Sub
Sub JalanJam()
Dim Sh As Worksheet
Set Sh = Sheet1
With Sh.Range("E18")
.Value = Now
.NumberFormat = "hh:mm:ss AM/PM"
End With
Application.OnTime Now + TimeValue("00:00:01"), "JalanJam", , True
Call CurrentTime
End Sub
Jam analog sudah selsai dibuat, jangan lupa setiap akan menutup file ini tekan tombol stop terlebih dahulu agar script nya berhenti bekerja.