VBAでグラフを作成したのですが、判例を表示させようとすると、以下のエラーメッセージが
表示されてしまいます。
実行時エラー7
メモリが不足しています
この場合ですが、コードをどのように書き直したらよいでしょうか
解決方法としてなにがあるでしょうか?
不勉強で申し訳ありませんがよろしくお願いします。
Public
1'###変数定義### 2'グラフ作成用ループカウンター 3Dim i As Long 4'項目名用ループカウンター 5Dim x As Long 6'ワークシート処理用 7Dim WS As Worksheet 8'最終行取得 9Dim EndRow As Long 10'最終列取得 11Dim EndCol As Long 12'ワークシート代入用変数 13Dim sh As Worksheet 14Dim flag As Long 15 16'「graph」の有無を確認しなければ作成しデータを削除 17For Each WS In Worksheets 18 19 If WS.Name = "graph" Then 20 Application.DisplayAlerts = False 21 WS.Delete 22 Application.DisplayAlerts = True 23 Exit For 24 End If 25Next WS 26 27'ワークシートアクティブ 28Worksheets.Add 29ActiveSheet.Name = "graph" 30 31'シート指定用変数 32Set sh = Sheets("data") 33 34'グラフ作成に必要な最終列を取得 35EndCol = sh.Cells(2, Columns.Count).End(xlToLeft).Column 36 37 38'初期値 セル[F1]の No1_接続成功率(発信+着信)から開始するため 39x = 6 40 41'グラフを一項目づつ作成するためのループ 42For i = 2 To EndCol 43 'グラフ作成を行うためシートを活性 44 Sheets("graph").Activate 45 'グラフ作成 46 With ActiveSheet.Shapes.AddChart.Chart 47 'グラフ種類設定 48 .ChartType = xlLine 49 'グラフ範囲指定 50 .SetSourceData Source:=Union(sh.Range(sh.Range("C2"), sh.Cells(Rows.Count, 4).End(xlUp)), _ 51 sh.Range((sh.Cells(2, x)), sh.Cells(Rows.Count, x).End(xlUp))) 52 53 'グラフタイトル表示 54 .HasTitle = True 55 56 'タイトル文字列設定 57 .ChartTitle.Text = sh.Cells(1, x) 58 59 '凡例を追加 (現状エラーが起きる == メモリーが足りない) 60 '.Name = Range("B2") 61 'グラフ位置の設定 62 .Parent.Top = Range("B" & ((i - 2) * 20 + 2)).Top 63 .Parent.Left = Range("B" & ((i - 2) * 15 + 2)).Left 64 65 '判例を追加 66 ' .Name = Range("B2") 67 68 'グラフ作成用 69 End With 70 71 With ActiveSheet.ChartObjects(i - 1).Chart 72 If .HasLegend = False Then .HasLegend = True ''凡例を表示する 73 .Legend.Position = xlLegendPositionTop ''凡例を上に表示する 74 .Legend.IncludeInLayout = False ''凡例をグラフに重ねる 75 With .Legend.Format.Fill 76 .Visible = msoTrue ''凡例を塗りつぶします 77 .ForeColor.RGB = RGB(255, 0, 0) ''赤色 78 .ForeColor.TintAndShade = 0.5 ''明暗の設定 79 End With 80 End With 81'####################### 82 'グラフサイズ設定 83 With ActiveSheet.ChartObjects 84 .Height = 290 85 .Width = 1000 86 End With 87'グラフ項目移動用カウンター 88x = x + 1 89Next i 90'ループ終了 91 MsgBox "完了しました" 92End Sub 93コード
回答1件
あなたの回答
tips
プレビュー