You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Shape.Width有时为整数有时为小数?VBA文本框尺寸取值咨询

你的VBA代码返回值忽整忽小的原因

你的代码本身没问题,问题出在两个地方:

  1. 单位转换的精度问题:VBA中Shape.Width/Height/Top/Left返回的是当前文档设置的显示单位下的数值(可以在「文件→选项→高级→显示」里修改)。而Office内部始终用整数缇存储这些参数,所以当把缇数转换成显示单位时,就会出现“整数缇→整数/小数显示单位”的情况。

  2. MsgBox的自动格式化:MsgBox会自动判断数值的显示方式——如果数值是整数(比如5.0),它就会省略小数点和末尾的0,直接显示成5;如果是带有小数部分的数值(比如5.1234),就会显示对应的小数位数。这不是VBA读取的数值不稳定,只是MsgBox帮你做了简化显示。

你可以用下面的代码验证一下,强制显示四位小数,就能看到真实的精确数值:

Sub getShapeNow()
    With ActiveWindow.Selection.ShapeRange(1)
        MsgBox .Name
        MsgBox "Width: " & .Width & vbCrLf & "精确值: " & Format(.Width, "0.0000")
        MsgBox "Height: " & .Height & vbCrLf & "精确值: " & Format(.Height, "0.0000")
        MsgBox "Top: " & .Top & vbCrLf & "精确值: " & Format(.Top, "0.0000")
        MsgBox "Left: " & .Left & vbCrLf & "精确值: " & Format(.Left, "0.0000")
    End With
End Sub

内容的提问来源于stack exchange,提问作者Gerald Tow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:38:51