我试图在VBA中作为较大宏的一部分绘制错误,并在尝试在具有70000多行的图纸上运行宏时遇到错误。代码在较小的文件上运行时没有错误,因此我怀疑这是问题所在。
这是一个无法运行的代码示例;
xStart = 1661.625
yStart = 76.5
yEnd = 11126311
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, xStart, yStart, xStart, yEnd).Select
With Selection.ShapeRange.Line
.EndArrowheadStyle = msoArrowheadTriangle
.ForeColor.RGB = RGB(255, 0, 0)
End With
请注意,如果我摘下
yEnd
中的最后一个以使其成为1112631
,则箭头将正确绘制。在图纸上绘制时,箭头对象的长度是否有限制?有人为此工作吗?
最佳答案
可以达到的最大高度为2348 inches
,如下图所示。2348 inches
是169056
点。您可以在Excel中通过在“即时”窗口中键入?Application.InchesToPoints(2348)
进行检查。但是,您最多可以达到169156
您可以尝试此代码
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 100, 100, 100, 169156)
如果右键单击添加的形状,您将看到大小为
2348
英寸,如上面的屏幕截图所示。在169157
处,它将引发错误。因此,要回答您的问题Is there a limit to the length of an arrow object...
,答案是169156
。蛮力代码找到极限。
Sub Sample()
Dim shp As Shape
Dim i As Long
'~~> I started with 50000 instead of 169000
'~~> The lower you go the more time it will take obviously
For i = 169000 To 169158
On Error Resume Next
Set shp = ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 100, 100, 100, i)
If Err.Number <> 0 Then
Debug.Print "Error at " & i
Exit For
Else
shp.Delete
End If
On Error GoTo 0
Next i
End Sub