【发布时间】:2021-03-24 23:04:16
【问题描述】:
我需要在已经存在的图表的背景上添加、定位和调整图片大小。
Sub Add_Picture()
Application.ScreenUpdating = False
Dim Input_Data As Worksheet
Set Input_Data = ThisWorkbook.Sheets("Input Data")
'### Find Chart
Dim chrt As ChartObject
Set chrt = Input_Data.ChartObjects(Input_Data.ChartObjects.Count) ' finding the only chart on the sheet
'### Add the picture
chrt.Chart.ChartArea.Format.Fill.UserPicture ("C:\Users\z188018\Desktop\Untitled.png") ' adding the picture
chrt.Chart.SetElement (msoElementPlotAreaNone) 'to show the picture (otherwise hidden behing a white background)
'### Center the picture
'### Resize the picture
Application.ScreenUpdating = True
End Sub
我已经尝试了多次,但没有什么值得一提的,这就是我将这些部分留空的原因。我可以手动完成,运行这段代码之后:
- 右击图片
- “格式化图表区域”
- “填充”
- “图片或纹理填充”
- 玩转“拉伸选项”
尽管如此,录制宏只给了我这个:
With ActiveSheet.Shapes("Chart 7").Fill
.Visible = msoTrue
.UserPicture "C:\Users\z188018\Desktop\Untitled.png"
.TextureTile = msoFalse
.RotateWithObject = msoTrue
End With
我无法适应它。
【问题讨论】:
-
对不起,我可能对实际编写这个帮助不大,但是您是否尝试过简单地记录您执行该过程的宏,然后对其进行修改以满足您的需求?
-
您好 hobenkr,我已经编辑了我的问题以反映您的反馈。谢谢!
-
嗯 excel 似乎认为它比我预期的要简单得多。您是否尝试过撤消更改然后运行该宏以恢复更改?这样你至少可以验证宏确实做了它想要做的事情。如果是这样,这可能表明您尝试执行的操作可能与很多默认值匹配。
-
不幸的是,这些不是默认值。每次鼠标点击我都有 1 个“代码块”实例。
-
好的,这更有意义。您可能是对的,因为生成的东西不是很有用,但这有点超出了我从头开始的 vba 技能。如果您想在某个地方发布完整的宏,我很乐意尝试与您一起偶然发现它,看看我们是否无法提取有用的部分。