0

在 Access VBA 应用程序中,我维护了一些动态生成 Excel 文件的 VBA 代码。最近,用户群迁移到 Excel 2010。

从那时起,在 Excel 中创建箭头的以下代码段搞砸了之前在 Excel 2003 上运行良好的位置:

Set ShapeObject = myWorksheet.Shapes.AddConnector(msoConnectorCurve, X1, Y1, DeltaX, DeltaY)

X1 和 Y1 是我的箭头起点的顶部和左侧坐标。

DeltaX 和 DeltaY 是我的箭头末端的水平和垂直距离,指的是它的起点。

我的箭头的结果开始是正确的,但它的结束只在具有 Excel 2003 的机器上是正确的。在具有更高版本的 Excel (>= 2007) 的机器上,我的箭头的末端是文档的上端。

这里有什么问题?

4

1 回答 1

0

经过漫长的反复试验和一些论坛研究,我突然想到了解决方案:

微软为 Excel 2003 中的 addConnector 方法提供的文档http://msdn.microsoft.com/en-us/library/office/aa221699(v=office.11 ​​).aspx 是错误的!基本上,第 3 和第 4 个参数没有正确记录。尽管它们被命名为 EndX 和 EndY,但它们代表宽度和高度。在 Excel 2003 中最初使用此方法时,我以某种方式假设了这一点。

现在是有趣的部分。在 Excel 2007 中,Microsoft 更改了 addConnector 方法,现在它完全符合文档。

这意味着我的代码:

Set ShapeObject = myWorksheet.Shapes.AddConnector(msoConnectorCurve, X1, Y1, DeltaX, DeltaY)

在 Excel 2003 中工作,但在 Excel 2007 及更高版本中,它必须调整为:

Set ShapeObject = myWorksheet.Shapes.AddConnector(msoConnectorCurve, X1, Y1, X1 + DeltaX, Y1 + DeltaY)
于 2013-03-27T11:31:22.937 回答