为什么Shape.Width有时是整数,有时是十进制?

时间:2018-04-30 05:34:14

标签: vba

我想问一下,为什么有时当我在选定的文本框中使用以下代码时,我会得到多个小数位的msgbox返回值(例如3-6位小数),有时会返回一个整数使用相同的文本框

Sub getShapeNow()

With ActiveWindow.Selection.ShapeRange(1)

MsgBox .Name
MsgBox .Width
MsgBox .Height
MsgBox .Top
MsgBox .Left

End With


End Sub

1 个答案:

答案 0 :(得分:1)

Powerpoint显然不支持任何宽度,但只支持一些基于屏幕重新分割的宽度。因此,如果你尝试

Sub GetShapeNow()

    With ActiveWindow.Selection.ShapeRange(1)
        .Width = 47.00147
        Debug.Print .Width
    End With

End Sub

我会在即时窗口上看到47.0015,因为我的重新解析不支持与Width完全相同的.00147

属性是十进制,逗号后面的值。如果逗号后面没有值,例如47而非47.01VBA将值写为47

检查一下:

Sub GetShapeNow()

    With ActiveWindow.Selection.ShapeRange(1)
        .Width = 47
        .Height = 34
        .Top = 40.4
        .Left = 147
        Debug.Print .Name; .Width; .Height; .Top; .Left
    End With  

End Sub

在即时窗口,您会看到:

Rectangle 1 47  34  40,4  147 

通常,Shape.Width返回的值来自类型Single