作者van6499 (KIDD)
看板Office
标题[算表] VBA 作图参照问题
时间Sun Feb 24 17:07:29 2019
软体: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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.126.14.166
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1550999254.A.B21.html
※ 编辑: van6499 (59.126.14.166), 02/24/2019 17:08:11
1F:→ soyoso: 产量有值只有10000笔,但算到10700多笔方面,有可能某栏内 02/24 17:19
2F:→ soyoso: 有资料於这10000笔下方,因用worksheets.usedrange的方式 02/24 17:21
3F:→ soyoso: 就会计算进去,这方面可用range.end、range.find方式找到 02/24 17:22
4F:→ soyoso: 某一栏最後一笔有值的储存格,要回传列号的话range.row 02/24 17:22
5F:→ soyoso: 只有一个工作表,将sheeta1改为这个工作表名的话 02/24 17:23
6F:→ soyoso: 设个变数=worksheets(1).name,下方以&连接该变数方式取代 02/24 17:24
7F:→ soyoso: 原本在字串内的sheeta1,写法就雷同巨集内连接变数i值 02/24 17:25
8F:→ soyoso: 至於有时不给run方面就要看不给执行是什麽,执行没产生结 02/24 17:27
9F:→ soyoso: 果?执行了却出现错误讯息? 02/24 17:27
10F:→ van6499: 最常发生的错误是我指定两个数列作图 02/24 17:32
11F:→ van6499: 结果他跑出第3.4.5.6个数列来 02/24 17:32
12F:→ van6499: 设个变数=worksheets(1).name 我试试看 感谢S大 02/24 17:33
13F:→ van6499: 目前尝试OK,太感谢了~ 02/24 17:40
14F:→ soyoso: 回文写到指定两个数列跑出3个以上数列来看,有可能储存格 02/24 17:46
15F:→ soyoso: 所停留的位置或是有选取复数范围储存格,所以在charts.add 02/24 17:47
16F:→ soyoso: 时就新增进去了 02/24 17:47
17F:→ soyoso: 所以要避免这个情况的话在set chartA = charts.add(..)的 02/24 17:48
18F:→ soyoso: 下方加上charta.chartarea.clear 02/24 17:48