[算表] VBA 作图参照问题

楼主: van6499 (KIDD)   2019-02-24 17:07:29
软件:Excel
版本:2010
目前有个产量EXCEL档案只有一个Sheet,目前已经做出可以作图的VBA code(如下)
想要将里面的SheetA1 改写成 本档案的第一个工作页
这样之后换档案执行VBA就不用再改Sheet name
有尝试过以ActiveWorkbook.Worksheets(1)取代,但是还是出问题
我的产量有值的只有10000笔,作图的结果会算到10700多笔,有时甚至不给RUN
请教各位大大该怎么修正比较好?
Sub Production_History()
Dim chartA As Chart
Dim i As Long
i = Worksheets("SheetA1").UsedRange.Rows.Count
Set chartA = Charts.add(After:=Worksheets(Worksheets.Count))
With chartA
.Name = "产量-用量"
.ChartType = xlXYScatter
.SeriesCollection.NewSeries
.SeriesCollection(1).Name = "=""产量"""
.SeriesCollection(1).XValues = "='SheetA1'!$R$4:$R$" & i
.SeriesCollection(1).Values = "='SheetA1'!$C$4:$C$" & i
.SeriesCollection.NewSeries
.SeriesCollection(2).Name = "=""用量"""
.SeriesCollection(2).XValues = "='SheetA1'!$R$4:$R$" & i
.SeriesCollection(2).Values = "='SheetA1'!$O$4:$O$" & i
.SeriesCollection(2).AxisGroup = 2
End With
End Sub
作者: soyoso (我是耀宗)   2019-02-24 17:19:00
产量有值只有10000笔,但算到10700多笔方面,有可能某栏内有资料于这10000笔下方,因用worksheets.usedrange的方式就会计算进去,这方面可用range.end、range.find方式找到某一栏最后一笔有值的储存格,要回传列号的话range.row只有一个工作表,将sheeta1改为这个工作表名的话设个变量=worksheets(1).name,下方以&连接该变量方式取代原本在字串内的sheeta1,写法就雷同宏内连接变量i值至于有时不给run方面就要看不给执行是什么,执行没产生结果?执行了却出现错误讯息?
楼主: van6499 (KIDD)   2019-02-24 17:32:00
最常发生的错误是我指定两个数列作图结果他跑出第3.4.5.6个数列来设个变量=worksheets(1).name 我试试看 感谢S大目前尝试OK,太感谢了~
作者: soyoso (我是耀宗)   2019-02-24 17:46:00
回文写到指定两个数列跑出3个以上数列来看,有可能储存格所停留的位置或是有选取复数范围储存格,所以在charts.add时就新增进去了所以要避免这个情况的话在set chartA = charts.add(..)的下方加上charta.chartarea.clear

Links booklink

Contact Us: admin [ a t ] ucptt.com