作者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/m.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