Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
VBA Excel-添加图片集。从图片中心向左,而不是从左上角_Excel_Vba_Image - Fatal编程技术网

VBA Excel-添加图片集。从图片中心向左,而不是从左上角

VBA Excel-添加图片集。从图片中心向左,而不是从左上角,excel,vba,image,Excel,Vba,Image,我有一个文件选择器来选择要加载到Excel工作表中的图像。 我使用addpicture选项并设置了与顶部和左侧的距离。 我的高度恒定在55像素,但我的宽度根据图片的不同而变化 所以我这里的问题是,我不能设置一个固定的。左输入,因为它从左上角开始计数。 是否有办法使.left输入从图像中心开始计数 额外信息:图片的中心始终是页面的中心,这可能会为代码提供更简单的解决方案 我目前有以下代码 Set xSh = ActiveSheet.Shapes.AddPicture(Logopath, LinkT

我有一个文件选择器来选择要加载到Excel工作表中的图像。 我使用addpicture选项并设置了与顶部和左侧的距离。 我的高度恒定在55像素,但我的宽度根据图片的不同而变化

所以我这里的问题是,我不能设置一个固定的。左输入,因为它从左上角开始计数。 是否有办法使.left输入从图像中心开始计数

额外信息:图片的中心始终是页面的中心,这可能会为代码提供更简单的解决方案

我目前有以下代码

Set xSh = ActiveSheet.Shapes.AddPicture(Logopath, LinkToFile:=msoFalse, SaveWithDocument:=msoCTrue, _
     Left:=250, Top:=308, Width:=-1, Height:=55)
我以前曾尝试使用fill.shapes完成此操作,但在那里我无法根据比率自动调整形状的宽度。如果我可以居中或设置,从图片的中心向左,我就完成了


使用此代码将图片水平居中对齐,保持
。Top
不变:

xSh.Left = (ActiveWindow.UsableWidth - xSh.Width) / 2
在现有代码后插入。

我的问题的解决方案

Set xSh = ActiveSheet.Shapes.AddPicture(Logopath, LinkToFile:=msoFalse, SaveWithDocument:=msoCTrue, Left:=0, Top:=308, Width:=-1, Height:=55)
  xSh.Left = (280 - (xSh.Width / 2))

感谢0liveradam8让我走上了正确的轨道

设置为页面宽度减半,减去图片宽度减半图片宽度不断变化。一次图片可能是100像素宽,另一次可能是20像素宽。你想做什么?我以为你是想把你的照片放在页面的中央,我之前的评论也会这样做。它考虑到了一个可变的图片宽度,只要你把它输入到计算中。啊,好吧,对不起,我误解了你的第一个评论。它与下面的类似吗
.Left=.TopLeftCell.Left+(.TopLeftCell.Width-.Width)/2
我尝试过这个,但这会给我带来错误。如果您可以在问题中包括一个屏幕截图,说明您希望它看起来如何,这会很有帮助。你的意思是说你想把它放在屏幕中间,而不是在页面的中间?我用这个代码的结果编辑了主要问题。对于activewindow.usablewidth,我们还有什么可以使用的吗?由于您的背景图片没有填满整个
usablewidth
,请将
activewindow.usablewidth
替换为您的背景图片的宽度。我找到了解决方案
Set xSh=ActiveSheet.Shapes.AddPicture(Logopath,LinkToFile:=msoFalse,SaveWithDocument:=msoCTrue,左:=0,顶:=308,宽:=1,高:=55)xSh.Left=(280-(xSh.Width/2))