ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 777|回复: 2

[求助] 求助大神,绘制折线图,SUB调用时出现“1004”错误

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-6 19:21 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 John1990 于 2018-6-6 19:28 编辑

请教大神,根据指定日期的开始和结束时间段,绘制折线图时碰到1004错误问题
说明
1、draw是根据指定区域绘制折线图,X轴和Y轴的区域数据是输入参数
2、main过程,使用range的已知区域数据代入,没问题,但是使用Cells表示的区域数据代入时,报“1004”错误
3、之所以使用cells代表区域数据,是因为cells内的行、列数据是需要经过计算的,是可变的,这个可变的部分还没代入,用一般数据代入就报错了


请大神指导下,谢谢

Sub draw(rng1, rng2 As Range)
Dim ch As ChartObject
Dim S1 As String
S1 = Range("A13")
On Error GoTo err:
Worksheets("sheet1").ChartObjects("动态").Delete   '确保这是唯一的图
err:
Set ch = Worksheets("主页").ChartObjects.Add(80, 185, 1200, 380)  '定义位置及大小
ch.Name = "动态"    '图表定名

With ch.Chart
            .ChartType = xlLine
            .SeriesCollection.NewSeries
            .SeriesCollection(1).Values = rng2
            .SeriesCollection(1).XValues = rng1
            .SeriesCollection(1).Name = S1   '"姓名"
           
End With
   
   ch.Chart.SeriesCollection(1).AxisGroup = 1
   ch.Chart.SeriesCollection(1).MarkerStyle = xlNone

With ch.Chart.Axes(xlCategory).TickLabels     '定义x轴即分类轴的字体和格式
        .Font.Size = 8
        .NumberFormatLocal = "m-d"
End With
Set rng1 = Nothing
Set rng2 = Nothing
Set rng3 = Nothing
Set ch = Nothing
End Sub

Sub main()
'Call draw(Worksheets("sheet1").Range("CP1:CY1"), Worksheets("sheet1").Range("CP10:CY10"))
Call draw(Worksheets("sheet1").Range(Cells(1, 80), Cells(1, 104)), Worksheets("sheet1").Range(Cells(2, 80), Cells(2, 104)))
End Sub






TA的精华主题

TA的得分主题

发表于 2018-6-6 21:26 | 显示全部楼层
2个问题:
1.draw(rng1, rng2 As Range)这种写法是错误的,rng1这样写就是variant类型,不是range,
改为draw(rng1 As Range, rng2 As Range)

2.Call draw(Worksheets("sheet1").Range(Cells(1, 80), Cells(1, 104)), Worksheets("sheet1").Range(Cells(2, 80), Cells(2, 104)))写法有问题。Cells也需要工作表前缀啊。你改为如下试试:

with worksheets("sheet1")
Call draw(.Range(.Cells(1, 80), .Cells(1, 104)), .Range(.Cells(2, 80), .Cells(2, 104)))
end with

注意Cells前面有点号

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-6 22:41 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 06:31 , Processed in 0.037156 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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