我有一個帶有 ActiveX 命令按鈕的工具列,用于自動生成電子郵件。其中一個按鈕 ROV 代表“重新考慮價值”,與評估有關。用戶往往會忘記 ROV 代表什么,所以我創建了一個 ActiveX 形狀作為“工具提示”,當滑鼠懸停在 ROV 按鈕上時顯示。
一開始一切都很好。
但是,如果單擊 ROV 右側的兩個命令按鈕之一,之后如果滑鼠懸停在 ROV 按鈕上,則當出現“工具提示”形狀時,前一個命令按鈕會突出顯示(如下所示)。
我玩過 ZOrder 屬性,它似乎在 VBA 下不起作用(我發現它適用于作為 VB.net 一部分的 InterOp)。
下面是我的代碼:
Private Sub CommandButton18_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
Const lngSensitivity As Long = 5
Dim i As Integer
With CommandButton18
If (x > lngSensitivity And x < .Width - lngSensitivity And y > lngSensitivity And y < .Height - lngSensitivity) Then
With Worksheets("Sheet1")
With .Shapes("Rectangle 1")
' .ZOrder (msoBringToFront)
.Fill.Transparency = 0
.Line.Transparency = 0
For i = 1 To 200 'Fade out shape and text.
.Fill.Transparency = i / 200
.TextFrame2.TextRange.Characters.Font.Fill.Transparency = i / 200
.Line.Transparency = i / 200
DoEvents
Next
End With
End With
End If
End With
End Sub
有人可以幫忙嗎?
螢屏截圖
uj5u.com熱心網友回復:
Shape.ZOrder存在于 Excel VBA 中。此處列出了與該方法一起使用的 ZOrder 位置列舉。
要將物件帶到頂部,您應該使用msoBringForward(not msoBringToFront)。
uj5u.com熱心網友回復:
重試 ZOrder 屬性并沒有實作我的目標后,我注意到當我重新初始化應用程式(即啟動 Workbook_Open)而應用程式仍然打開時,它會解決問題,然后形狀會出現在命令按鈕上方. 通過反復試驗,我找到了唯一需要添加的行才能實作此更改。
重溫以下部分:
With Worksheets("Sheet1")
.Range("U1").Select ‘Position cursor. ==> ADD THIS LINE.
With .Shapes("Rectangle 1")
' .ZOrder (msoBringToFront) ==> Eliminate this line, as it serves no useful purpose.
.Fill.Transparency = 0
.Line.Transparency = 0
For i = 1 To 200 'Fade out shape and text.
.Fill.Transparency = i / 200
.TextFrame2.TextRange.Characters.Font.Fill.Transparency = i / 200
.Line.Transparency = i / 200
DoEvents
Next
End With
End With
我不知道這為什么有效,但確實如此——而且,歸根結底,這才是最重要的。??
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/346672.html
