楼主: 千年寒玉生
1484 6

[问答] Excel VBA求助 [推广有奖]

  • 2关注
  • 8粉丝

学科带头人

46%

还不是VIP/贵宾

-

TA的文库  其他...

投资人 骑牛者

威望
0
论坛币
12288 个
通用积分
370.7282
学术水平
23 点
热心指数
36 点
信用等级
14 点
经验
3019 点
帖子
970
精华
0
在线时间
3246 小时
注册时间
2014-4-18
最后登录
2024-5-11

10论坛币
求教大神,本人初学VBA,书上的这段代码运行不出来,请教下面红色那里是怎么错的
Sub CreatedStackedChart()
Dim Cht As Chart
Dim Ser As Series
finalrow = Cells(Rows.Count, 1).End(xlUp).Row
finalcol = Cells(1, Columns.Count).End(xlToLeft).Column
OrigSeriesCount = finalcol - 1
finalseriescount = OrigSeriesCount * 2
ChtHeight = 1000
LabSize = 200
nextcol = finalcol + 2
Cells(1, 1).Resize(finalrow, finalcol).Copy Destination:=Cells(1, nextcol)
finalcol = Cells(1, Columns.Count).End(xlToLeft).Column
MyFormula = "= & ChtHeight & RC[-1]"
For i = finalcol + 1 To nextcol + 2 Step -1
Cells(1, i).EntireColumn.Insert
Cells(1, i).Value = "dummy"
Cells(2, i).Resize(finalrow - 1, l).FormulaR1C1 = MyFormula
Next i
finalcol = Cells(1, Columns.Count).End(xlToLeft).Column
ActiveSheet.Shapes.AddChart(xlAreaStacked).Select
Set Cht = ActiveChart
Cht.SetSourceData Source:=Range(Cells(1, nextcol), Cells(finalrow, finalcol))
Cht.PlotBy = xlColumns
For i = finalseriescount - 1 To 1 Step -2
Cht.Legend.LegendEntries(i).Delete
Next i
TopScale = OrigSeriesCount * ChtHeight
With Cht.Axes(xlValue)
.MaximumScale = TopScale
.MinorUnit = LabSize
.MajorUnit = ChtHeight
End With
Cht.SetElement (msoElementPrimaryValueGridLinesMinorMajor)
For i = finalseries To 2 Step -2
Cht.SeriesCollection(i).Interior.ColorIndex = xlNone
Next i
Cht.Axes(xlValue).TickLabelPositon = xlNone
AxisRow = finalrow + 2
Cells(AxisRow, 1).Resize(1, 3).Value = Array("Label", "X", "Y")
TickMarkCount = OrigSeriesCount * (ChtHeight / LabSize) + 1
Cells(AxisRow + 1, 2).Resize(TickMarkCount, 1).Value = 0
Cells(AxisRow + 1, 3).Resize(TickMarkCount, 1).FormulaR1C1 = "=R[-1]C+" & LabSize
Cells(AxisRow + 1, 3).Value = 0
Cells(AxisRow + 1, 1).Value = 0
Cells(AxisRow + 2, 1).Resize(TickMarkCount - 1, 1).FormulaR1C1 = "=IF(r[-1]c+" & LabSize & " >= " & ChtHeight & ",0,r[-1]c+" & LabSize & ")"
newfinal = Cells(Rows.Count, 1).End(xlUp).Row
Cells(newfinal, 1).Value = ChtHeight
Set Ser = Cht.SeriesCollection.NewSeries
With Ser
.Name = "Y"
.Values = Range(Cells(AxisRow + 1, 3), Cells(newfinal, 3))
.XValues = Range(Cells(AxisRow + 1, 2), Cells(newfinal, 2))
.ChartType = x1XYScatter
.MarkerStyle = xlMarkerStyleNone
End With
For i = 1 To TickMarkCount
Ser.Points(i).HasDataLabel = True
Ser.Points(i).DataLabel.Text = Cells(AxisRow + i, 1).Value
Next i
Cht.Legend.LegendEntries(Cht.Legend.LegendEntries.Count).Delete
End Sub


QQ图片20141102133107.jpg (14.87 KB)

显示错误

显示错误

gerengongzuo.xlsx

59.84 KB

最佳答案

芐雨 查看完整内容

出错的是MyFormula = "= & ChtHeight & RC[-1]" 把他修改成你想要的公式就好
关键词:EXCEL exce xcel cel VBA Excel

本帖被以下文库推荐

沙发
芐雨 发表于 2014-11-1 22:41:09 |只看作者 |坛友微信交流群
出错的是MyFormula = "= & ChtHeight & RC[-1]"
把他修改成你想要的公式就好
已有 2 人评分经验 论坛币 收起 理由
客初 + 20 + 20 热心帮助其他会员
coral033 + 100 热心帮助其他会员

总评分: 经验 + 120  论坛币 + 20   查看全部评分

使用道具

藤椅
芐雨 发表于 2014-11-2 08:19:26 |只看作者 |坛友微信交流群
错误提示什么,最好有附件

使用道具

板凳
千年寒玉生 发表于 2014-11-2 13:28:25 |只看作者 |坛友微信交流群
芐雨 发表于 2014-11-2 08:19
错误提示什么,最好有附件
OK,错误提示上传了

使用道具

报纸
芐雨 发表于 2014-11-3 08:47:23 |只看作者 |坛友微信交流群
千年寒玉生 发表于 2014-11-2 13:28
OK,错误提示上传了
可能是MyFormula有误,请上传附件,方便测试啊

使用道具

地板
千年寒玉生 发表于 2014-11-3 22:01:30 |只看作者 |坛友微信交流群
芐雨 发表于 2014-11-3 08:47
可能是MyFormula有误,请上传附件,方便测试啊
谢谢,附件上传了,工作表2是程序

使用道具

7
千年寒玉生 发表于 2014-11-4 08:06:32 |只看作者 |坛友微信交流群
芐雨 发表于 2014-11-3 23:40
出错的是MyFormula = "= & ChtHeight & RC[-1]"
把他修改成你想要的公式就好
谢谢,昨晚找到了,非常感谢

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-22 03:18