如何使Excel ActiveX标签在运行时透明?

我想把一个透明的标签放在Excel表格的顶部,这样我就可以利用鼠标单击/拖动/等等来标记MouseMove事件来“绘制单元格”(也就是改变它们的填充颜色等等)。 – 因为我不能这样做细胞本身。

现在一切正常,除了我不能使标签在运行时透明(又名VBA)…而在devise模式中完全一样的东西按预期工作。 具体来说,我有代码(或多或less):

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”的标签,然后重新创build它(上面的代码进入“init”Sub)。 除了标记的代码行之外的所有代码行都会产生所需的结果。 标记的标签将BackStyle属性设置为fmBackStyleTransparent …但实际上并不使标签透明。 这是令人沮丧的,因为它是在devise时完美地工作的相同的方法!

你有这个解决scheme吗? 我通过将标签声明为MsForms.Label或Control来解决类似的问题,但是这个表单对象没有这些属性,再加上,可以使用OLEObject设置的标签属性比在MsForms标签或控件。

所有你需要做的之后这一行:

MapLabel.Object.BackStyle = fmBackStyleTransparent

把这一行:

ActiveSheet.Shapes(MapLabel.Name).Fill.Transparency = 1

我希望我帮助。

PS如果你需要解释我将编辑我的答案。

我有和你一样的问题,但在Word中。 对我来说,解决scheme是做到以下几点:

在devise模式下:

  1. 右键点击对象
  2. 导航到Switch to automatic form/Image > Wrapping > In front of the text
  3. 添加一个空的图片到你的标签