Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3531|回复: 0

2010版的迷你图基本就这些属性设置

[复制链接]
发表于 2017-3-13 18:13 | 显示全部楼层 |阅读模式
本帖最后由 雅致如诗的叶子 于 2017-3-17 14:19 编辑

迷你图属性设置那些事……

  想用VBA做几个迷你图,百度后居然没有相关代码,仅有一篇短文可参考,只好录制宏测试,看看各项属性如何设置。2010版的迷你图基本就这些属性设置了,其中有几条命令务必注意上下文的顺序,否则会报错的。
  只是测试,没有意义,根据需要自行修改,望能有新发现指教我。


s.png



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)

相关帖子

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-6 02:29 , Processed in 0.222008 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表