Excel VBA AddConnector方法在Excel 2010中拧紧的位置

Excel VBA AddConnector方法在Excel 2010中拧紧的位置,vba,excel,Vba,Excel,在Access VBA应用程序中,我维护了一些VBA代码,可以动态生成Excel文件。最近,用户群迁移到Excel 2010 从那时起,以下在Excel中创建箭头的代码片段将在Excel 2003上正常工作的位置拧紧: Set ShapeObject = myWorksheet.Shapes.AddConnector(msoConnectorCurve, X1, Y1, DeltaX, DeltaY) X1和Y1是箭头起点的顶部和左侧坐标 DeltaX和DeltaY是指箭头末端相对于其起点的水

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

从那时起,以下在Excel中创建箭头的代码片段将在Excel 2003上正常工作的位置拧紧:

Set ShapeObject = myWorksheet.Shapes.AddConnector(msoConnectorCurve, X1, Y1, DeltaX, DeltaY)
X1和Y1是箭头起点的顶部和左侧坐标

DeltaX和DeltaY是指箭头末端相对于其起点的水平和垂直距离

结果“我的箭头”的开头是正确的,但其结尾仅在使用Excel 2003的计算机上正确。在具有更高版本Excel(>=2007)的计算机上,我的箭头末端指向文档的上端


这里的问题是什么?

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

Microsoft为Excel 2003中的addConnector方法提供的文档是错误的!基本上,第三和第四个参数没有正确记录。虽然它们被命名为EndX和EndY,但它们表示宽度和高度。在Excel 2003中最初使用此方法时,我不知怎的假设了这一点

现在是有趣的部分。在Excel2007中,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)