Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA msoScaleFromTopLeft不适用于我_Excel_Vba - Fatal编程技术网

Excel VBA msoScaleFromTopLeft不适用于我

Excel VBA msoScaleFromTopLeft不适用于我,excel,vba,Excel,Vba,我在Windows 10中使用Excel 2016,我在单元格B17中插入了一张图片,然后想调整其大小,同时将图片的左上角保留在单元格B17的左上角。一些图片调整到左下角,而另一些图片调整到右上角。 我试着使用msoScaleFromTopLeft,但我仍然得到同样的图片缩小到左下角或右上角 以下是我的宏VBA代码: Range("B17").Select ActiveSheet.Pictures.Insert(PhotoLocation).Select 'Insert photograph

我在Windows 10中使用Excel 2016,我在单元格
B17
中插入了一张图片,然后想调整其大小,同时将图片的左上角保留在单元格
B17
的左上角。一些图片调整到左下角,而另一些图片调整到右上角。 我试着使用msoScaleFromTopLeft,但我仍然得到同样的图片缩小到左下角或右上角

以下是我的宏VBA代码:

Range("B17").Select

ActiveSheet.Pictures.Insert(PhotoLocation).Select  'Insert photograph from file.

Selection.ShapeRange.ScaleWidth 0.2, msoFalse, msoScaleFromTopLeft
我错过了什么?
有人能帮我做这件事吗,或者建议一种替代方法来做我想做的事

您可以尝试不同的方法,您可以
为插入的图片设置对象(无需使用
选择
选择

之后,您可以使用myPic的
和下面的嵌套属性修改它的属性

代码

Sub SetPics()

Dim myPic As Picture
Dim PhotoLocation As String
Dim Rng As Range

Set Rng = Range("B17")

Set myPic = ActiveSheet.Pictures.Insert(PhotoLocation)
With myPic
    .ShapeRange.ScaleWidth 0.2, msoFalse, msoScaleFromTopLeft
    .Top = Rows(Rng.Row).Top
    .Left = Columns(Rng.Column).Left
End With

End Sub

看看下面的链接。。。答案将图像放置在与范围@wayne相关的位置,请参见下面的注释。谢谢你的帮助@你看过我上面的答案了吗?让我知道代码是否如您所愿。谢谢您的回复,但它不起作用。图片的大小调整到左下角和一个调整大小到右上角结束,他们的左上角在中间的细胞D15,而不是左上角的B17。有没有可能我没有打开需要打开的东西?韦恩·G·邓恩的回答也不起作用。我想我发现了问题所在。我遇到麻烦的图片比宽的高。当我将它们插入Excel时,它们显示正确,但显示旋转90度或270度。Excel似乎以此为基础确定内部左上角。当图片左上角在单元格D15的中间时,如果将旋转改变为0或180,则图片左上角正好位于单元格B17的左上角。但是画面是横向的。如有任何建议,将不胜感激。已解决!我使用了韦恩·G·邓恩建议的修改版本。设置MyPic=MySht.Shapes.AddPicture(PhotoLocation,msoFalse,msoTrue,InitPicLeft,InitPicTop,-1,-1)以使图片以全尺寸显示以获得旋转、高度和宽度。我使用这些来获得我想要的高度和宽度,然后使用设置MyPic=MySht.Shapes.AddPicture(PhotoLocation、msoFalse、msoTrue、MyPicLeft、MyPicTop、FinalPicWidth、FinalPicHeight)将图片带到正确的位置,该图片具有正确的高度和宽度。移动它将导致上述相同的问题。谢谢你的帮助!