tft每日頭條

 > 生活

 > excelvba自定義功能區顯示時間

excelvba自定義功能區顯示時間

生活 更新时间:2025-02-27 07:22:25
No.1

電子表是兒時的一個記憶,那個時候,為了戴上一個漂亮的電子表不知道有多麼開心,兒時年幼時間并不是什麼重要的東西,反正對時間也沒有概念,主要是在同學面前伸出手腕那一瞬間的自豪才覺得無比喜悅。

為了回憶童年,也為了追憶逝去的時間,本節主要介紹一下,如何利用VBA來制作一個7位碼時間顯示效果。

下圖為例:

excelvba自定義功能區顯示時間(VBA設計一個電子表時間顯示效果)1

特點:

  1. 時間大小可以任意調整。
  2. 數字顔色可任意修改。
  3. 利用繪制Shape對象圖形來達到構建數字效果。
  4. 時間調用當前電腦時間進行顯示。

excelvba自定義功能區顯示時間(VBA設計一個電子表時間顯示效果)2

上圖為:圖形對象參數設置表。

No.2

對于時間數字大小,可修改本表,以實現其顯示的位置、大小以及顔色。

設計代碼之初就為了可調節性進行了考慮,所以在不同的應用環境下,稍加修改得以使用。

excelvba自定義功能區顯示時間(VBA設計一個電子表時間顯示效果)3

上圖為時間數字顯示狀态表,本表是固定格式,不能随意更改。

也就是說本表定義了兩個狀态,一個True,一個False。

True表示顯示,False表示隐藏。

本例的顯示邏輯為,在首先在Excel中繪制四個時間數字,即小時和分鐘的時間數字。

然後提取當前系統時間,分别判斷數字,對繪制的小時和分鐘進行顯示和隐藏屬性設置。

最終達到顯示效果。

No.3

下面看一下代碼實現過程:

excelvba自定義功能區顯示時間(VBA設計一個電子表時間顯示效果)4

按鈕代碼

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

excelvba自定義功能區顯示時間(VBA設計一個電子表時間顯示效果)5

繪制數字過程:

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

excelvba自定義功能區顯示時間(VBA設計一個電子表時間顯示效果)6

設置隐藏部分:

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函數就可以實現時間顯示,如果說意義的話,應該是可以提高一下邏輯能力。

總結:

本節編碼過程中需要用到一些基礎的内容知識:

  1. 字符截取函數:Mid(String,n,n)
  2. 時間函數:Time
  3. 小時函數:Hour(Time)
  4. 分鐘函數:Minute(Time)
  5. 格式化函數:Format(String,"0#")
  6. Shape對象AddShape()方法
  7. Range.Offset(row,column)方法
  8. 過程調用

歡迎關注、收藏

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved