延續「Word / Command Button 無法設定文字對齊的替代方案,使用Label」
因為 Label可以控制文字置中,所以用來替代Command Button
在這篇進一步將Label設定成有按下去的效果
主要是設定Label的SpecialEffect屬性
初始設定改為1,外觀看起來就像button了
再來是2,會有聚焦的感覺
接著是6,會有彈起來的感覺
最後再回到1
但是如果直接這樣跑程式,因為程式執行速度很快,其實看不出來有改變
所以變成這過程要有很短暫的停頓
如果是在Excel可以用Application.Wait來設定最短1秒的停止
然而,Word VBA是沒有這個功能,變通的方式是引用Excel物件來執行
不過這個方式最小的停止時間是1秒
雖然爬文有看到一些方式來達到毫秒的設定
但是有人會提到這都只是0~1秒之間的隨機值,並不是真的如設定的毫秒數
也有提到引用windows API
但是這個缺點是程式是會完全停止不會有任何反應,而且實際測試時
也不知道什麼原因,會看不出任何的SpecialEffect屬性改變
因此改用Timer,這樣可以獲得更接近的時間
綜合以上
我設定了2個自訂程序
clickStyle(lable As Label),傳入 Label
間隔0.2秒,改變SpecialEffect的設定值
將這個程序加在Label的click程序的最開始,Label click()事件被觸發時就執行
1 2 3 4 5 6 7 8 9 |
' Label樣式 ' Public Sub clickStyle(lable As Label) lable.SpecialEffect = 2 stopTimer (0.2) lable.SpecialEffect = 6 stopTimer (0.2) lable.SpecialEffect = 1 End Sub |
stopTimer(ms As Double),傳入浮點數值,小數點秒數
利用Do-Loop迴圈,停止條件是當前時間減去開始時間的時間差,大於等於所設定的間隔時間
1 2 3 4 5 6 7 8 9 10 11 |
' 暫停程式 ' Sub stopTimer(ms As Double) starting_time = Timer Do DoEvents Loop Until (Timer - starting_time) >= ms End Sub |
效果看起來應該很接近了