我试图在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
,则箭头将正确绘制。
在图纸上绘制时,箭头对象的长度是否有限制?有人为此有工作吗?
答案 0 :(得分:2)
您可以达到的最大高度为2348 inches
,如下图所示。
2348 inches
是169056
分。您可以通过在立即窗口中输入?Application.InchesToPoints(2348)
在Excel中进行检查。但是,您最多可以达到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