0

我需要通过 VBA 在形状中设置文本的透明度,实际上我需要为整个形状设置透明度,但这是我坚持的文本。

我似乎无法导航对象模型以找到透明度属性

Function SetTransparency(Value As Single)
On Error GoTo AbortNameShape

If ActiveWindow.Selection.ShapeRange.Count = 0 Then
    MsgBox "No Shapes Selected"
    Exit Function
End If

With ActiveWindow.Selection.ShapeRange
    .Fill.Transparency = Value
    .Line.Transparency = Value
    .TextFrame.TextRange. **HELP**  .Transparency = Value
    End With
AbortNameShape:
MsgBox Err.Description

End Function

谷歌给了我

.TextFrame.TextRange.Characters.Font.Fill.Transparency

来自https://www.mrexcel.com/forum/excel-questions/510589-transparent-text-shapes-textbox-1-a.html

但这在对象不存在的.Fill属性上失败了。Font我假设 MS 在给出答案后的 10 年里改变了对象模型,但我坚持目前的方法。

谢谢

4

1 回答 1

2

试试这个(仅适用于当前选择的第一个成员)

With ActiveWindow.Selection.ShapeRange(1)
    With .TextFrame2.TextRange.Font.Fill
        .Transparency = 0.5
    End With
End With

如果要遍历当前选择中的所有形状,则需要在尝试使用文本之前测试每个形状以查看 .HasTextFrame 和 .TextFrame.HasText 是否为真。

于 2017-09-20T15:34:55.073 回答