为什么你需要有时select对象来避免“对象不支持这个属性或方法”

我注意到,我有时会得到错误:

运行时错误“438”:

对象不支持这个属性或方法

在Excel VBA中,但如果我打电话。 .selectselect对象,然后这个错误消失。

例如,我最近想要改变工作表上一些链接图像的大小,并使用macroslogging器logging以下内容:

 ActiveSheet.Shapes.Range(Array("Picture 3")).Select Selection.ShapeRange.Height = 303.12 

这段代码显然工作正常。 然后我改变了代码如下:

 Dim sheetReport as Worksheet Set sheetReport = Worksheets("Report") With sheetReport Dim pictureNumber As Long For pictureNumber 1 to 3 .Shapes.Range("Picture " & pictureNumber).ShapeRange.Height = 303.12 Next pictureNumber End With 

现在我得到上面提到的错误, 如果我然后改变这个代码

 Dim sheetReport as Worksheet Set sheetReport = Worksheets("Report") With sheetReport Dim pictureNumber As Long For pictureNumber 1 to 3 .Shapes.Range("Picture " & pictureNumber).Select Selection.ShapeRange.Height = 303.12 Next pictureNumber End With 

它再次运作。 但当然,我不应该select每个图片只是为了改变其Height属性?

这在我的testing运行正常工作。

  Sub PictureResizing() Dim sheetReport As Worksheet Set sheetReport = ThisWorkbook.Worksheets("Report") Dim pictureNumber As Long With sheetReport For pictureNumber = 1 To 3 .Shapes("Picture " & pictureNumber).Height = 303.12 Next pictureNumber End With End Sub