|
分類:[VB6 以前]
Excell2000(VB6.0)にて、以下のようなマクロを組みたいと思っています。
以下に示す【問題】の解決策をご教示頂きたく、よろしくお願い致します。
【目的】
以下のようなWorksheetにおいて、チェックボックスを用いて、チェックした系列のみをグラフにしたい。
時間 物理量A 物理量B ・・・ 物理量BJ
1 10 20 ・・・ 5
2 11 25 ・・・ 16
・ YY YY ・・・ YY
・ YY YY ・・・ YY
X YY YY ・・・ YY
※Xは記録時間による(一定ではない)。
YYは任意の数字。
・は省略を示す。系列は全部で60個。
【現状】
以下に示すプログラムを組んでいます。
グラフに示したいデータのチェックボックスにチェックした後、コマンドボタンを押すとグラフが作成されるようにしています。
本プログラムにて、チェック数が28個までは意図したとおりにグラフが描けるのですが、29個以上にチェックを入れると
『実行時エラー'1004' Rangeメソッドは失敗しました。'Worksheet'オブジェクト』と出ます。
どうも"Range"の文字数の制限に引っかかっているように思うのですが、解決策が判りません。(そもそも"文字数"が何を示すのか解りません。)
【備考】
恥ずかしながら、当方、プログラム作成は今回が始めてのド素人です。
以下のプログラムもインターネットの実例やQ&Aを調べながら、丸1日かけて何とか書きました。
修正すべき箇所が沢山あるのかも知れませんが、まずは上記問題の解決策をご教示頂きたく、よろしくお願い致します。
【プログラム】
------------------------------------------------------------------------------
Private Sub CommandButton1_Click()
Dim GraphRange As String
Dim Chart1 As Chart
Dim Sheet1 As Worksheet
Dim lastRow As Long
Set Chart1 = Application.Charts("Graph1")
Set Sheet1 = Worksheets("data")
Chart1.Activate
ChartObjects.Delete
Set Chart1 = Application.Charts("Graph1")
Sheet1.Activate
lastRow = Sheet1.Range("B" & Rows.Count).End(xlUp).Row
GraphRange = "B3:B" & lastRow
If CheckBox1.Value = True Then
Sheet1.Activate
GraphRange = GraphRange & ",C3:C" & lastRow
End If
・
・
・
If CheckBox60.Value = True Then
Sheet1.Activate
GraphRange = GraphRange & ",BJ3:BJ" & lastRow
End If
Chart1.ChartWizard Source:=Sheet1.Range(GraphRange), Gallery:=xlXYScatter, Format:=6, PlotBy:=xlColumns, CategoryLabels:=1, SeriesLabels:=1, HasLegend:=True,
CategoryTitle:="時間", ValueTitle:="deg C, lb/min, psig"
End Sub
------------------------------------------------------------
|