我有一个循环遍历工作表中形状的脚本,将图像属性抓取到picHeight
和picWidth
变量中:
ws.Shapes(myImg.ID).Select
With Selection
killer = IsError(.ShapeRange.Height)
If IsError(.ShapeRange.Height) = True Then
GoTo badShape
End If
PicHeight = .ShapeRange.Height
PicWidth = .ShapeRange.Width
End With
有时形状不是图片(工作表上也有图表和文本框),VBA不断抛出“438错误”(对象不支持此属性或方法)即使添加on error resume next
以及我上面的错误处理程序。当选择对象没有.shaperange.height
或shaperange.width
属性时,会出现此问题。
似乎VBA甚至无法将代码交给错误处理程序,只是因为选择没有选定的成员。
答案 0 :(得分:3)
如果您只使用from twx.botapi.botapi import Error, Message
if issubclass(r, Error):
print('Error!')
else:
print('success!')
&而我认为您不需要错误处理.Height
属性(而不是.Width
或.ShapeRange.Height
我刚刚对图表,矩形,图片和表格标签进行了以下测试:
.SHapeRange.Width
得到以下结果:
Sub Shapes()
Dim sh As Shape
Dim wa As Worksheet
Set ws = Sheet1
For Each sh In ws.Shapes
Debug.Print sh.Name & ": " & sh.Height
Debug.Print sh.Name & ": " & sh.Width
Next
End Sub
因此,您的代码可以简化为:
Chart 1: 216
Chart 1: 360
Rectangle 2: 72
Rectangle 2: 72
Picture 3: 218
Picture 3: 379
Label21: 18
Label21: 72