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