Vba Print向我显示一个值,但';如果不是';不会';不能使用此值

Vba Print向我显示一个值,但';如果不是';不会';不能使用此值,vba,if-statement,powerpoint,Vba,If Statement,Powerpoint,我完全困惑不解。找不到解决办法。 我问形状的值: ? ActiveWindow.Selection.ShapeRange.TextFrame.MarginBottom 回答:11.29354 我写了一个例程: If Not oshp.TextFrame.MarginBottom = 11.29354 Then TellMe = "MarginBottom =" & oshp.TextFrame.MarginBottom & " but not 11.29354" En

我完全困惑不解。找不到解决办法。 我问形状的值:

? ActiveWindow.Selection.ShapeRange.TextFrame.MarginBottom
回答:
11.29354

我写了一个例程:

If Not oshp.TextFrame.MarginBottom = 11.29354 Then
    TellMe = "MarginBottom =" & oshp.TextFrame.MarginBottom & " but not 11.29354" 
End If
例行公事行不通。我声称形状的MarginBottom没有这个值,但同时它也给了我这个值


这意味着价值不是价值。任何有经验的人都有这方面的背景信息?

可能是四舍五入,您可以在即时窗口中进行测试,因此:

首先指定值:

ActiveWindow.Selection.ShapeRange.TextFrame.MarginBottom = 11.23456789
然后检索它:

? ActiveWindow.Selection.ShapeRange.TextFrame.MarginBottom
 11.23457 
更改后,根据新值和指定值进行测试:

? ActiveWindow.Selection.ShapeRange.TextFrame.MarginBottom = 11.23456789
False
? ActiveWindow.Selection.ShapeRange.TextFrame.MarginBottom = 11.23457
False
两者都不起作用,请转换为字符串并测试:

? CStr(ActiveWindow.Selection.ShapeRange.TextFrame.MarginBottom) = "11.23457"
True

我不知道您是否能够在字符串值上进行测试,但这种比较会起作用。

在例程中,如果不是11.29354,则为
oshp.TextFrame.MarginBottom显示什么?如果在即时窗口中执行
?告诉我
,它会打印出什么?您能在本地窗口中查看此形状
oshp
?你的
选择.shaperage
是否可能与
oShp
不同?嘿,大卫。-它向我展示了奇怪的“Margin.Bottom=11.29354,但不是11.29534”——这就是我如何理解这里有些可疑之处的原因。幸运的是CStr完成了任务。PERFEKT!非常感谢你!现在将始终使用CStr和类似的值。