|
楼主 |
发表于 2023-4-22 21:28
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 chengsijing 于 2023-4-23 00:38 编辑
我录制宏后,根据宏的代码改写了一下。实现了功能。但我对代码有3个想改进的问题,看有哪个高手帮我改进:
'问题1:这个"图表 2"是哪里看到的?怎么修改?有没有默认值的写法?不然每次都要录制宏一边,看看这图表的名称才能设置它?
'问题2:一列这种写法.FullSeriesCollection(1).Values 感觉有点笨,而且怕对错了行,我查资料网上有ActiveChart.SetSourceData Source:= 这种写法,这种写法针对不同列(列之间不一定连续,例如A/C/D列怎么写?哪种写法速度最快?
'问题3:我发现使用默认的水平坐标轴,它会自动从1开始,而不是10开始。我目前只能再加一列,把实际行ID数写上,用下面语句设才能达到 水平坐标轴的数值是这个数实际的行数。有没有方法不用加行ID就可以自动做到?
还有水平坐标要每列的.XValues都要设置一次,不然“选择数据”里面会看到不设置的列的水平坐标没有跟着变化。有语法设置这几条折线都公用一条水平坐标吗?每列都要重新设置太麻烦了
- Sub 设置图形数据区域()
- '关闭屏幕刷新
- Dim start As Double
- Application.ScreenUpdating = False
- Application.Calculation = xlCalculationManual
- start = Timer()
-
- Dim dangqianWS As Worksheet
- Dim kaishiHang As Long, jiezhiHang As Long
- Set dangqianWS = ActiveWorkbook.ActiveSheet
- With dangqianWS
- kaishiHang = .Cells(2, 8).Value '开始行
- jiezhiHang = .Cells(2, 9).Value '截至行
- '问题1:这个"图表 2"是哪里看到的?怎么修改?有没有默认值的写法?不然每次都要录制宏一边,看看这图表的名称才能设置它?
- .ChartObjects("图表 2").Activate
- 'Application.CutCopyMode = False
- With ActiveChart
- '问题2:一列这种写法.FullSeriesCollection(1).Values 感觉有点笨,而且怕对错了行,我查资料网上有ActiveChart.SetSourceData Source:= 这种写法,这种写法针对不同列(列之间不一定连续,例如A/C/D列怎么写?哪种写法速度最快?
- .FullSeriesCollection(1).Values = "=Sheet1!$A$" & kaishiHang & ":$A$" & jiezhiHang
- .FullSeriesCollection(2).Values = "=Sheet1!$C$" & kaishiHang & ":$C$" & jiezhiHang
- .FullSeriesCollection(3).Values = "=Sheet1!$D$" & kaishiHang & ":$D$" & jiezhiHang
- '问题3:我发现使用默认的水平坐标轴,它会自动从1开始,而不是10开始。我目前只能再加一列,把实际行ID数写上,用下面语句设才能达到 水平坐标轴的数值是这个数实际的行数。有没有方法不用加行ID就可以自动做到?
- '还有水平坐标要每列的.XValues都要设置一次,不然“选择数据”里面会看到不设置的列的水平坐标没有跟着变化。有语法设置这几条折线都公用一条水平坐标吗?每列都要重新设置太麻烦了
- .FullSeriesCollection(1).XValues = "=Sheet1!$A$" & kaishiHang & ":$A$" & jiezhiHang '设置水平坐标轴的数值范围
- .FullSeriesCollection(2).XValues = "=Sheet1!$A$" & kaishiHang & ":$A$" & jiezhiHang '设置水平坐标轴的数值范围
- .FullSeriesCollection(3).XValues = "=Sheet1!$A$" & kaishiHang & ":$A$" & jiezhiHang '设置水平坐标轴的数值范围
- End With
- End With
- Set dangqianWS = Nothing
- Application.Calculation = xlCalculationAutomatic '自动计算
- Application.ScreenUpdating = True '打开屏幕刷新
- Application.StatusBar = "程序运行时间 " & Format(Timer - start, "0.0") & " 秒"
- End Sub
复制代码
|
|