Excel VBA中的图形箭头超出范围
我试图在VBA中绘制一个错误作为较大宏的一部分,当我试图在70000多行的工作表上运行宏时,遇到了一个错误。代码在较小的文件上运行时没有错误,因此我怀疑这就是问题所在 下面是一个不运行的代码示例Excel VBA中的图形箭头超出范围,excel,vba,Excel,Vba,我试图在VBA中绘制一个错误作为较大宏的一部分,当我试图在70000多行的工作表上运行宏时,遇到了一个错误。代码在较小的文件上运行时没有错误,因此我怀疑这就是问题所在 下面是一个不运行的代码示例 xStart = 1661.625 yStart = 76.5 yEnd = 11126311 ActiveSheet.Shapes.AddConnector(msoConnectorStraight, xStart, yStart, xStart, yEnd).Select With Selectio
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英寸,如下图所示
2348英寸
为169056
点。您可以在Excel中通过在即时窗口中键入?Application.InchesToPoints(2348)
来检查这一点。但是,您可以达到的最大分数是169156
你可以试试这个代码
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 100, 100, 100, 169156)
如果右键单击添加的形状,您将看到尺寸为2348英寸,如上面的屏幕截图所示。在169157
,它将抛出一个错误。因此,要回答您的问题,箭头对象的长度是否有限制…
,答案是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
子样本()
将shp变暗为形状
我想我会坚持多久
“~~>我从5万开始,而不是169000
“~~>你走得越低,显然需要的时间就越多
对于i=169000至169158
出错时继续下一步
设置shp=ActiveSheet.Shapes.AddConnector(msoConnectorStraight,100100i)
如果错误号为0,则
调试。打印“错误在”&i
退出
其他的
上海医药删除
如果结束
错误转到0
接下来我
端接头
Nice,有趣的事实;当我尝试手动进一步拉动形状时,它可以工作,但“属性”中的长度保持不变:SYes,如果在手动增加高度时通过绘图工具检查高度,高度将上升到2348.52“
在这之后,它仍然是持续感谢响应,我认为有一个上限,但找不到相关文档。非常感谢!