|
こんにちは!VBA初心者です(__)
下記のマクロはグループごとにシートが作成されるため、シートの数が100を越えてしまいます。なのでこれらのデータを一枚のシートに納めたいのですが、どこをどのように変えたら良いのかわかりません。出来れば分かりやすく教えて下さい。お願いします!!
Sub MkGraphHaru()
Dim i, j, k As Long '汎用カウンタ
Dim MaxRow As Long  '最終行
Dim MaxRowGraph As Long 'グラフ作成時の行数
Dim plant As String 'プラントコード
Dim item_code As String '品目コード
Dim item_name As String '品目名
Dim start_grp As Long  '同じグループの開始行
Dim ws As Worksheet '最初の(データの含まれる)ワークシート
'最終行を取得(連続データでなければ、動作不良になる)
MaxRow = Range("A1").End(xlDown).Row
'最初のワークシートを記憶
Set ws = ActiveSheet
'初期値
plant = Cells(2, 1)
item_code = Cells(2, 2)
item_name = Cells(2, 3)
start_grp = 2
'2行目から最終行までループ
For i = 2 To MaxRow
'i行目のプラントコードと品目コードのどちらかが保存済みのものと異なるとき
If (plant <> ws.Cells(i, 1)) Or (item_code <> ws.Cells(i, 2)) Then
'ワークシートを追加
'プラント、品目コード、品目名
Worksheets.Add.Name = plant & item_code & item_name
'先頭行を新しいワークシートにコピー
ws.Range("A1:Q1").Copy _
Worksheets(plant & item_code & item_name).Range("A1")
'データを新しいワークシートにコピー
ws.Range(start_grp & ":" & i - 1).Copy _
Worksheets(plant & item_code & item_name).Range("A2")
'グラフを追加する
Worksheets(plant & item_code & item_name).Shapes.AddChart.Select
'グラフシートの行数
MaxRowGraph = Worksheets(plant & item_code & item_name).Range("A1").End(xlDown).Row
'グラフの種類
ActiveChart.ChartType = xlLineMarkers
'データの範囲
ActiveChart.SetSourceData Source:=Range("1:" & MaxRowGraph)
'グループ情報を改める
plant = ws.Cells(i, 1)
item_code = ws.Cells(i, 2)
item_name = ws.Cells(i, 3)
start_grp = i
End If
Next i
End Sub
余談ですが、(start_grp & ":" & i - 1)はどのような意味でしょうか!?
|
|