vba图片图形复选框

酥酥 发布于 2022-01-07 941 次阅读


一、初识图形对象

dim shp as shape
dim x as integer
for each shp in activesheet.shapes
	msgbox shp.name '名称
	msgbox shp.type '类型
	msgbox shp.topleftcell.address '左上角地址
	msgbox shp.topleftcell.left '左边距 单位:像素
	msgbox shp.topleftcell.top '上边距
	msgbox shp.topleftcell.width '宽度
	msgbox shp.topleftcell.height '高度
	
实现了批量获取图形对象名称

图形对象包括控件、艺术字、图片等广义的图形

二、插入复选框

通过录制宏我们了解到
For Each shp in ActiveSheet.Shapes
lf shp Name <> "Button 209" Then   '这是大名,不会随小名变
	shp Delete
	End if
Next
for i =2 to range("a1000").end(xlup).row
ActiveSheet.CheckBoxes.Add(Range("b"&i).left,Range("b"&i).Top,Range("b"&i).Width,Range("b"&i).Height).Select  '四个参数 左 上 宽 高
Selection.Characters.Text =range("a"&i).value
Selection.LinkedCell = "$C$"&i

三、批量插入图片

sheet1.shapes.addpicture filename(文件路径+文件名),linktofile(链接到某个文件,通常不选),savewithdocument(文档与图片一起保存,通常选),left,top,width,height

on error resume next可以让错误不报出来,继续执行下去

四、图表处理

首先要明白chartobjects、chartobject、chart

ChartObjects对象---工作表上所有ChartObject对象的集合 ChartObject对象---充当Chart对象的容器 Chart对象---单独的图表工作表,在chart上对图表的格式设置

Sub插入图表()
Dim cht As Chart
Dim x As integer
ChartObjects.add(左,上,宽,高)
For x = 1 To 4
Set cht = Sheet1.ChartObjects.Add(cells(3*(x- 1) +1,15).left, cells(3 *(x- 1)+ 1,15).Top, 432, 135).Chart  '转换为chart
cht.SetSourceData Source:=cells(3* (x-1)+ 1, 2).Resize(3,6)  '这是数据源range类型
Next
End Sub

图表属性设置

cht.ChartType = xlLine '添加标题
cht.HasTitle = True
cht.ChartTitle.Text = Cells(3 * (x-1)+ 1,1).Value &"利润率” 
cht.Legend.Position = xlLegendPositionCorner'设置图例位置


Sub线条和标签()
Dim chot As ChartObject
For Each chot ln Sheet1.ChartObjects'设置线条颜色和粗细
chot.Chart.FullSeriesCollection(1).Format.Line.ForeColor.RGB = RGB(255,0,0)
chot.Chart.FullSeriesCollection(1).Format.Line.Weight = 1
"添加数据标签
chot.Chart.FullSeriesCollection(1).Select
chot.Chart.SetElement (msoElementDataLabelTop)‘更改数据标签的颜色
chot.Chart.FullSeriesCollection(1).DataLabels.Font.Color = vbRed

Next
End Sub

对于图表等空间的vba处理非常建议先录制宏再调试,多使用with语句美化代码

仰天大笑出门去,我辈岂是蓬蒿人
最后更新于 2022-01-07