我想在Excel工作表的頂部放一個透明標籤,這樣我就可以利用鼠標單擊/拖動來標記MouseMove事件來「繪製單元格」(也就是改變它們的填充顏色等等) /等 - 因爲我不能在細胞本身做到這一點。如何使Excel ActiveX標籤在運行時透明?
現在一切正常,除了我不能使標籤在運行時透明(又名VBA)......而在設計模式下完全一樣的東西按預期工作。具體地講,我的代碼(更多或更少):
Dim MapLabel As OLEObject
On Error Resume Next
Sheet2.OLEObjects("MapLabel").Delete
Set MapLabel = Sheet2.OLEObjects.Add("Forms.Label.1")
MapLabel.name = "MapLabel"
MapLabel.Placement = xlMoveAndSize
MapLabel.Object.Caption = ""
' Problem line below
MapLabel.Object.BackStyle = fmBackStyleTransparent
' Problem line above
MapLabel.Left = Sheet2.cells(2, 6).Left
MapLabel.Top = Sheet2.cells(2, 6).Top
MapLabel.Width = Sheet2.cells(2,6).Width * 10
MapLabel.Height = Sheet2.cells(2,6).Height * 10
所以,換句話說,我第一刪除名爲「MapLabel」的標籤,然後重新創建它(上面的代碼進入一個「初始化」子)。除了標記的代碼行之外的所有代碼行都會產生所需的結果。標記爲確實設置標籤的BackStyle屬性爲fmBackStyleTransparent ...但它不是實際上使標籤透明。這是令人沮喪的,因爲它是在設計時完美無缺的相同方法!
您有解決方案嗎?我通過將標籤聲明爲MsForms.Label或Control來解決類似的問題,但是表單對象沒有這些屬性,另外,有更多的標籤屬性可以使用OLEObject設置,而不是使用MsForms 。標籤或控件。
你爲什麼要刪除它並重新創建它?作爲測試它工作正常,我使用ActiveX標籤,它從透明變爲不透明使用'私人小組Worksheet_SelectionChange(BYVAL目標作爲範圍)運行時 如果Label1.BackStyle = fmBackStyleOpaque然後 Label1.BackStyle = fmBackStyleTransparent Else Label1。BACKSTYLE = fmBackStyleOpaque 結束如果 結束小組 ' –
@StevenMartin我刪除它在任何情況下,其性能已通過用戶與工作簿工作時改變了最後一次。這些屬性對於我想實現的目標是必不可少的(例如透明度,位置等)。重新創建它,以便我可以再次使用它,顯然。關於您的測試,您將無法訪問單元格的SelectionChange事件,因爲標籤將覆蓋所述單元格(以便我可以在這些單元格的space_上使用MouseMove,MouseDown事件(而不是單元格本身) ...如果你知道我的意思 –
@StevenMartin哦,還有一件事:正如我在我的文章中所說的,標籤**的Backstyle屬性已經是** fmBackStyleTransparent。它只是標籤不透明,作爲屬性表明它應該是 –