我想在Excel中的工作表顶部放置一个透明标签,这样我就可以利用标签的MouseMove事件通过鼠标点击/拖动等方式"绘制单元格"(也就是更改填充颜色等),因为我本身无法在单元格上做到这一点。
现在一切都很好,只是我不能在运行时(也就是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"的标签,然后重新创建它(上面的代码进入"init"Sub)。除标记的代码行外,所有代码行都会产生所需的结果。标记的确实将标签的BackStyle属性设置为fmBackStyleTransparent。。。但它实际上并没有使标签透明。这是令人沮丧的,因为这是在设计时完美工作的相同方法!
你有解决办法吗?我读过关于通过将标签声明为MsForms.label或Control来解决类似问题的文章,但工作表对象没有这些属性,此外,使用OLEObject可以设置的标签属性比使用MsForms.label或Control要多得多。
这一行之后您需要做的一切:
MapLabel.Object.BackStyle=fmBackStyleTransparent
放这行:
ActiveSheet.Shapes(MapLabel.Name).Fill.Transparency=1
我希望我能帮上忙。
附言:如果你需要解释,我会修改我的答案。
我和你有同样的问题,但在Word中。对我来说,解决方案是做以下事情:
在设计模式下:
- 右键单击对象
- 导航到
Switch to automatic form/Image
>Wrapping
>In front of the text
- 将空图片添加到标签中