Почему Shape.Width иногда целочисленный, а иногда десятичный? - PullRequest
0 голосов
/ 30 апреля 2018

Я хотел бы спросить, почему иногда, когда я использую следующий код в выбранном текстовом поле, я получаю возвращаемое значение 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 голосов
/ 30 апреля 2018

Powerpoint, очевидно, не поддерживает какую-либо ширину, а только некоторую ширину, которая основана на разрешении экрана. Таким образом, если вы попробуете

Sub GetShapeNow()

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

End Sub

Я бы увидел 47.0015, напечатанный в ближайшем окне, так как Width точно так же, как .00147, не поддерживается моей резольволюцией.


Свойства являются десятичными со значениями после запятой. Если после запятой нет значений, например, 47, а не 47.01, VBA записывает значение как 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:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...