電子表是兒時的一個記憶,那個時候,為了戴上一個漂亮的電子表不知道有多麼開心,兒時年幼時間并不是什麼重要的東西,反正對時間也沒有概念,主要是在同學面前伸出手腕那一瞬間的自豪才覺得無比喜悅。
為了回憶童年,也為了追憶逝去的時間,本節主要介紹一下,如何利用VBA來制作一個7位碼時間顯示效果。
下圖為例:
特點:
上圖為:圖形對象參數設置表。
No.2對于時間數字大小,可修改本表,以實現其顯示的位置、大小以及顔色。
設計代碼之初就為了可調節性進行了考慮,所以在不同的應用環境下,稍加修改得以使用。
上圖為時間數字顯示狀态表,本表是固定格式,不能随意更改。
也就是說本表定義了兩個狀态,一個True,一個False。
True表示顯示,False表示隐藏。
本例的顯示邏輯為,在首先在Excel中繪制四個時間數字,即小時和分鐘的時間數字。
然後提取當前系統時間,分别判斷數字,對繪制的小時和分鐘進行顯示和隐藏屬性設置。
最終達到顯示效果。
No.3下面看一下代碼實現過程:
按鈕代碼
Private Sub ShowTime()
DelDagit'清除Excel圖形
Dim s As Worksheet
Dim xR As Range, R As Range
Set s = ThisWorkbook.Worksheets("Sheet3")
Set xR = s.Range("A2:A8")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 設置小時
Dim n As Integer, Ho
Ho = VBA.Format(VBA.Hour(Time), "0#")
n = VBA.Len(Ho)
For i = 1 To n
SetTimeNumber xR, VBA.Mid(Ho, i, 1), i
Next i
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 繪制冒号
Dim dR As Range
Set dR = s.Range("A10:A11")
SetTimeNumber dR, 11, 3
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 設置分鐘
Dim m As Integer, Mo
Mo = VBA.Format(VBA.Minute(Time), "0#")
n = VBA.Len(Mo)
For i = 1 To n
SetTimeNumber xR, VBA.Mid(Mo, i, 1), i 3
Next i
End Sub
繪制數字過程:
Private Sub SetTimeNumber(xR As Range, nx, i)
Dim Wx, Hx
Wx = VBA.Val(xR.Item(1).Offset(0, 4).Value) * 2
Hx = VBA.Val(xR.Item(1).Offset(0, 3).Value)
Dim Pobj() As Object
Erase Pobj
For Each R In xR
ReDim Preserve Pobj(R.Row - 2)
Set Pobj(R.Row - 2) = Me.Shapes.AddShape _
(msoShapeRectangle, R.Offset(0, 2) (i - 1) * (Wx Hx), R.Offset(0, 1), R.Offset(0, 4), R.Offset(0, 3))
With Pobj(R.Row - 2)
.Fill.ForeColor.RGB = RGB(10, 12, 22)
.Visible = True
' .Fill.ForeColor.SchemeColor = R.Offset(0, 5)
End With
Next R
If nx <> 11 Then
SetVisible Pobj, nx '設置隐藏
End If
End Sub
設置隐藏部分:
Private Sub SetVisible(Pobj, nx)
Dim sR As Range
Set sR = ThisWorkbook.Worksheets("Sheet2").Range("A2:A11")
Dim vx As Variant, s As Integer
s = 0
For Each vx In Pobj
s = s 1
vx.Visible = sR.Item(nx 1).Offset(0, s)
Next vx
End Sub
時間關系,沒有做成動态顯示,有興趣的朋友可做一個試試。
其實,做這個的目的并沒有什麼意義,一個Time函數就可以實現時間顯示,如果說意義的話,應該是可以提高一下邏輯能力。
總結:
本節編碼過程中需要用到一些基礎的内容知識:
歡迎關注、收藏
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!