|
本帖最后由 雅致如诗的叶子 于 2017-3-17 14:19 编辑
迷你图属性设置那些事……
想用VBA做几个迷你图,百度后居然没有相关代码,仅有一篇短文可参考,只好录制宏测试,看看各项属性如何设置。2010版的迷你图基本就这些属性设置了,其中有几条命令务必注意上下文的顺序,否则会报错的。
只是测试,没有意义,根据需要自行修改,望能有新发现指教我。
Sub WorkWithSparklines()
Dim rng As Range
Dim slg As SparklineGroup
Dim slRng As Range
Application.ScreenUpdating = False
Range("C1").CurrentRegion.HorizontalAlignment = xlCenter '■跨列居中
Range("B:B").ColumnWidth = 40 '■迷你图组合列宽
Rows("2:11").RowHeight = 30 '■迷你图组合行高
Call FillRandomData '■调用子过程产生随机数
Set rngData = Range("C2", "N11") '■指定的动态数据源,想放在循环中改变变量位置需要做相对引用数据源
Set slRng = Range("B2", "B11") '■生成迷你图组合的位置单元格
'■xlSparkLine 迷你折线图; xlSparkColumn 迷你柱状图; xlSparkColumnStacked100 迷你盈亏图;注意下句位置:
Set slg = slRng.SparklineGroups.Add(XlSparkType.xlSparkLine, rngData.Address) '■准备插入一个迷你图表组合
slg.LineWeight = 1.2 '■定义迷你图组合线条与标记粗细,磅
With slg.SeriesColor '■设置迷你图组合系列线条颜色
.Color = RGB(20, 200, 150) '■迷你图线条颜色
.TintAndShade = 0 '■迷你图线条颜色透明度,1 无色
End With
With slg.Points.Markers '■所有数据点标记设置
'.Visible = True '■所有数据点标记都显示在线条上
'.Color.Color = RGB(0, 128, 128) '■迷你图数据点标记颜色
'.Color.TintAndShade = 0 '■迷你图数据点标记颜色透明度,1 无色
End With
'With slg.Points.Highpoint '■数据最高点设置
'.Visible = True '■显示最高数据点
'.Color.Color = RGB(0, 0, 255) '■最高数据点颜色
'.Color.TintAndShade = 0 '■最高数据点颜色透明度,1 无色
'End With
With slg.Points.Lowpoint '■数据最低点设置
'.Visible = True '■显示最低数据点
'.Color.Color = RGB(0, 128, 128) '■最低数据点颜色
'.Color.TintAndShade = 0 '■最低数据点颜色透明度,1 无色
End With
With slg.Points.Negative '■数据负点设置
'.Visible = True '■显示数据负点
'.Color.Color = RGB(0, 128, 225) '■数据负点颜色
'.Color.TintAndShade = 0 '■最低数据点颜色透明度,1 无色
End With
With slg.Points.Lastpoint '■数据尾点设置
'.Visible = True '■显示数据尾点
'.Color.Color = RGB(0, 128, 225) '■数据尾点颜色
'.Color.TintAndShade = 0 '■最低数据点颜色透明度,1 无色
End With
'■xlSparkLine 迷你折线图; xlSparkColumn 迷你柱状图; xlSparkColumnStacked100 迷你盈亏图;注意下句位置:
slg.Type = xlSparkLine '■迷你图三种显示状态,折线?柱状?盈亏?
slg.Points.Highpoint.Visible = True '■允许改变线条颜色值
Range("B6:B11").SparklineGroups.Group Location:=Range("B6") '■将选择的迷你图组合到 B2 单元格,任何改变都将针对组合改动
Range("B2:B11").SparklineGroups.Ungroup '■取消迷你图组合,否则无法对单条迷你图做出修改
Range("B3").SparklineGroups.Item(1).LineWeight = 2 '■设置 Range("B3") 迷你图线条粗细为 2 磅
Range("B11").SparklineGroups.Item(1).LineWeight = 1.1 '■设置 Range("B11") 迷你图线条粗细为 1.1 磅
Range("B3").SparklineGroups.Item(1).SeriesColor.Color = RGB(200, 50, 10) '■设置 Range("B3") 迷你图线条颜色
Range("B5").SparklineGroups.Item(1).SeriesColor.Color = RGB(0, 64, 200) '■设置 Range("B5") 迷你图线条颜色
Range("B9").SparklineGroups.Item(1).SeriesColor.Color = RGB(255, 64, 200) '■设置 Range("B9") 迷你图线条颜色
Range("B2:B11").SparklineGroups.Item(1).Axes.Horizontal.Axis.Visible = True '■迷你图显示横坐标轴
Range("B2:B11").SparklineGroups.Item(1).Axes.Horizontal.Axis.Visible = False '■迷你图不显示横坐标轴
'Range("B2").SparklineGroups.Item(1).DateRange = "G1" '■横坐标日期类型坐标轴,未能理解
Range("B2:B11").SparklineGroups.Item(1).Axes.Horizontal.RightToLeftPlotOrder = True '■从右到左的横坐标绘图数据
Range("B10").SparklineGroups.Item(1).Axes.Horizontal.RightToLeftPlotOrder = True '■从右到左的横坐标绘图数据
Range("B2:B11").SparklineGroups.Item(1).Axes.Vertical.MinScaleType = xlSparkScaleSingle '■纵坐标轴最小值根据单元格行高自动设置
Range("B2:B11").SparklineGroups.Item(1).Axes.Vertical.MinScaleType = xlSparkScaleGroup '■纵坐标轴最小值适用于所有迷你图的轴高
Range("B2:B11").SparklineGroups.Item(1).Axes.Vertical.MinScaleType = xlSparkScaleCustom '■纵坐标轴最小值自定义
Range("B2:B11").SparklineGroups.Item(1).Axes.Vertical.CustomMinScaleValue = 0 '■纵坐标轴最小值自定义轴高
Range("B2").SparklineGroups.Item(1).Axes.Vertical.MinScaleType = xlSparkScaleCustom '■纵坐标轴最小值自定义
Range("B2").SparklineGroups.Item(1).Axes.Vertical.CustomMinScaleValue = 15 '■纵坐标轴最小值自定义轴
Range("B7").SparklineGroups.Item(1).Axes.Vertical.CustomMinScaleValue = 20 '■纵坐标轴最小值自定义轴高
Range("B9").SparklineGroups.Item(1).Axes.Vertical.CustomMinScaleValue = 17 '■纵坐标轴最小值自定义轴高
Range("B2:B11").SparklineGroups.Item(1).Axes.Vertical.MaxScaleType = xlSparkScaleGroup '■纵坐标轴最大值根据单元格行高自动设置
Range("B2:B11").SparklineGroups.Item(1).Axes.Vertical.MaxScaleType = xlSparkScaleGroup '■纵坐标轴最大值适用于所有迷你图的轴高
Range("B2:B11").SparklineGroups.Item(1).Axes.Vertical.MaxScaleType = xlSparkScaleCustom '■纵坐标轴最大值自定义
Range("B2:B11").SparklineGroups.Item(1).Axes.Vertical.CustomMaxScaleValue = 0 '■纵坐标轴最大值自定义轴高
Range("B3").SparklineGroups.Item(1).Axes.Vertical.MaxScaleType = xlSparkScaleGroup '■纵坐标轴最大值自定义
Range("B3").SparklineGroups.Item(1).Axes.Vertical.CustomMaxScaleValue = 13 '■纵坐标轴最大值自定义轴高
Range("B4").SparklineGroups.Item(1).Axes.Vertical.CustomMaxScaleValue = 18 '■纵坐标轴最大值自定义轴高
Range("B6").SparklineGroups.Item(1).Axes.Vertical.CustomMaxScaleValue = 22 '■纵坐标轴最大值自定义轴高
Range("B2").FormulaR1C1 = "爱我中华" '■迷你图单元格中显示的文字说明
Range("B2").Font.Name = "微软雅黑" '■迷你图单元格中显示的字体
Range("B2").Font.Size = 16 '■迷你图单元格中显示的字体大小
Range("B2").Font.Color = RGB(255, 0, 10) '■迷你图单元格中显示的文字颜色
Range("B2").HorizontalAlignment = xlCenter '■选择单元格字体居中
Range("B2").Borders(xlEdgeTop).Weight = xlMedium '■外顶部区域边框线粗细:xlThin细、xlMedium中、xlThick粗
Range("B2").Borders.Color = RGB(255, 0, 0) '■边框线颜色
Range("B7").FormulaR1C1 = "杀死日本猪" '■迷你图单元格中显示的文字说明
Range("B7").HorizontalAlignment = xlLeft '■选择单元格字体向右对齐
Range("B9").Interior.Color = RGB(225, 240, 245) '■单元格背景颜色
Range("B11").FormulaR1C1 = "抵制韩货" '■迷你图单元格中显示的文字说明
Range("B11").HorizontalAlignment = xlRight '■选择单元格字体向右对齐
Application.ScreenUpdating = True '■关闭屏幕刷新
End Sub
'----------------------------------------------------------------------'■产生随机数
Function FillRandomData() As Range '■无甚意义,仅产生随机数提供演示数据
Dim month As Integer
Dim i As Integer
Dim j As Integer
For month = 1 To 12
Cells(1, month + 2).Value = MonthName(month, True) '■第一行的月份
Next month
For i = 1 To 10
Cells(i + 1, 1).Value = "标题 " & i '■第一列各行标题说明
For j = 1 To 12
Cells(i + 1, j + 2) = Round(Rnd * 100) '■自动产生随机数做为数据源
Next j
Next i
End Function
迷你图代码.rar
(2.37 KB, 下载次数: 11)
|
|