Results of 1 - 1 of about 3686 for グラフ (0.002 sec.)
- [[20141013225035]]
- #score: 3272
- @digest: 804fe7fe2f3fd1b79ea375b7ff8fdf2e
- @id: 66354
- @mdate: 2014-10-16T16:09:34Z
- @size: 11897
- @type: text/plain
- #keywords: ケナ (43904), chartobject (34682), フカ (32468), カケ (28138), イネ (23268), 図平 (23246), xlxyscatterlinesnomarkers (22182), ran (19018), フ貼 (17497), ネン (16578), 得-- (14782), 滑線 (10923), make (10831), chartobjects (10415), 平滑 (10013), ナイ (9803), charttype (7008), 定-- (6784), xlcolumns (6062), ラフ (5390), 置指 (5324), start (5220), setsourcedata (5219), グラ (5120), 各デ (4251), タ系 (4206), 値デ (4187), item (3980), chart (3872), (グ (3399), 停止 (3281), タ数 (3192)
- 『マクロでグラフを書こうとすると、「動作を停止しました」のメッセージがでる。』(グラフカケナイネン)
はじめまして。質問させていただきます。 マクロ機能を利用してグラフを作成しようとしています。 シート1枚のみ、内数値データが700×350のセルを埋めている状況です。 同シートへ ChartObjects.addメソッド を用いた途端、 「Microsoft Excelは動作を停止しました」というメッセージの後に Excelが再起動してしまいます。 この現象を回避し、グラフを作成できる方法はありませんでしょうか。 お力添えのほどよろしくお願いします。 < 使用 Excel:Excel2013、使用 OS:Windows8 > ---- グラフは詳しくありませんが、700×350ということは、データ系列は255を超えている? http://office.microsoft.com/ja-jp/excel-help/HA103980614.aspx#BMcharting 確認してみてください。 (稲葉) 2014/10/14(火) 09:19 ---- 稲葉さんありがとうございます。 説明が足らずすみませんでした。 シート内のデータを元にして複数のグラフを作る予定です。 おおよそデータ系列は100‾200となるはずです。(系列は列で指定。各系列のデータ数が700) また、今回はグラフの範囲指定もまだ行っていない状況です。 以下にマクロを示しますが、内容はたった一行だけです。 何かわかりましたら是非よろしくお願いします。 Sub test() ChartObjects.Add(0, 0, 500, 500) End Sub (グラフカケナイネン) 2014/10/14(火) 12:53 ---- 実行以前に構文エラーになりませんか? Sub test() ActiveSheet.ChartObjects.Add 0, 0, 500, 500 End Sub としても同じ状況でしょうか。 (Mook) 2014/10/14(火) 13:02 ---- Mookさんありがとうございます。 現在2010の環境しか使えない状況ですが、教えて頂いたマクロを試してみたところ 「'Add'メソッドは失敗しました」という実行時エラーを吐くようです。 2013の環境でテストできたらまた報告いたします。 ※上で載せたマクロはワークシートのモジュールに記述したものであり、引数のカッコはミスです。 (グラフカケナイネン) 2014/10/14(火) 17:40 ---- Mookさん 先のコメントの続きです。 2013を用いてマクロを試しましたところ、 前回同様に、Excelが再起動する結果となりました。 手動でグラフを作成する分には問題なく、 また、データ系列もしくはデータ数を半分にした場合にはマクロも正常に働きます。 体感では分かりませんが、 シート上のデータ数が多すぎるために、処理に時間がかかることが マクロが停まってしまう原因なのでしょうか。 (グラフカケナイネン) 2014/10/16(木) 08:38 ---- >また、今回はグラフの範囲指定もまだ行っていない状況です。 >以下にマクロを示しますが、内容はたった一行だけです。 >また、データ系列もしくはデータ数を半分にした場合にはマクロも正常に働きます。 一行でもエラーがでる問題は解決したのですね。 いずれにせよ今のコードを示したほうが早いのでは? どんなグラフかわかりませんが、 こちらではデータ数が多くてもちゃんと動いています。 Sub test() Dim r As Range Dim rx As Range, ry As Range Dim i As Long With Sheets("Sheet1") Set r = .Range("A2").Resize(700, 350) Set rx = r.Columns(1) Set ry = rx.Offset(, 101).Resize(, 250) With .ChartObjects.Add(0, 0, 500, 500).Chart .ChartType = xlXYScatter .HasTitle = True .ChartTitle.Characters.Text = "テスト" For i = 1 To ry.Columns.Count With .SeriesCollection.NewSeries .XValues = rx .Values = ry.Columns(i) .Name = ry.Cells(0, i) End With Next End With End With End Sub (マナ) 2014/10/16(木) 19:08 ---- マナさん ありがとうございます。 700×350の数値データがあるシートで試しましたが、 頂いたマクロも「With .ChartObjects.Add(0, 0, 500, 500).Chart」で停止してしまいました。 グラフ化したいデータは、x軸のデータ列とy軸データ列が組となったものが175組あります。 実際にマクロを運用する場合には、この組数と各データ数は増減致します。 第1行目に各データの名前(全データ組で異なる)、 第2行目に各データの種類(シート内でx用とy用の2種のみ)、 第3行目以降に数値データが並びます。 以下に図を示します。 ***************************************** name_1 name_1 name_2 name_2 name_175 name_175 data_x data_y data_x data_y data_x data_y x1(001) y1(001) x2(001) y2(001) … x175(001) y175(001) x1(002) y1(001) x2(002) y2(002) … x175(002) y175(002) : : : : : : : x1(701) y1(701) x2(701) y2(701) … x175(701) y175(701) ***************************************** 問題の箇所はメインのモジュールから呼び出して使っております。 以下に簡略化したコードを示しますが、 処理が開始されてすぐに問題の箇所にぶつかるため、 先に示した1行コードとほぼ同じようなものです。 引数の説明 var_setting():グラフの軸についての設定 num_start:グラフデータの開始組 num_end:グラフデータの最終組 worksheet_now:グラフを書き込むシート title:グラフのタイトル名(下のコード内では使用せず) ************************************************************************************************************************************** Function MAKE_CHARTOBJECT(var_setting() As Variant, num_start As Integer, num_end As Integer, worksheet_now As Worksheet, title As String) As ChartObject '変数========================== Dim i As Integer 'カウンタ Dim ran_item As Range 'y軸の範囲 '============================== 'グラフの作成===================================================================================================================================================== Select Case CStr(var_setting(con_glaph + 2)) 'グラフの種類(散布図またはヒストグラム) Case "xlXYScatterLinesNoMarkers" Set MAKE_CHARTOBJECT = worksheet_now.ChartObjects.Add(0, 0, 500, 500) 'グラフ貼り付け位置指定 'y軸の範囲を取得----------------------------------------------------- For i = num_start To num_end If ran_item Is Nothing Then Set ran_item = worksheet_now.Columns(i * 2) Else Set ran_item = Union(ran_item, worksheet_now.Columns(i * 2)) End If DoEvents Next i 'グラフの設定--------------------------------------------------------------------------------------------------------------------------------------------- With MAKE_CHARTOBJECT.Chart .SetSourceData Source:=ran_item, PlotBy:=xlColumns .ChartType = xlXYScatterLinesNoMarkers '散布図平滑線ありマーカーなし End With For i = 1 To .SeriesCollection.Count 'y軸それぞれにx軸を設定 With worksheet_now .SeriesCollection(i).XValues = _ Range(.Cells(3, (num_start + (i - 1)) * 2 - 1), .Cells(.Cells(3, (num_start + (i - 1)) * 2 - 1).End(xlDown).Row, (num_start + (i - 1)) * 2 - 1)) End With Next 'y軸--------- 'y軸の設定 'x軸--------- 'x軸の設定 Case "xlColumnClustered" 'ヒストグラムの作成処理 End Select '==================================================================================================================================================================== 'グラフ設定========================= 'タイトル等共通部分の設定処理 '=================================== End Function ************************************************************************************************************************************** (グラフカケナイネン) 2014/10/16(木) 21:08 ---- 確認のために少し修正しましたが、250系列でも問題ありませんが? Function MAKE_CHARTOBJECT(num_start As Integer, num_end As Integer, worksheet_now As Worksheet) As ChartObject '変数========================== Dim i As Integer 'カウンタ Dim ran_item As Range 'y軸の範囲 '============================== 'グラフの作成===================================================================================================================================================== Set MAKE_CHARTOBJECT = worksheet_now.ChartObjects.Add(0, 0, 500, 500) 'グラフ貼り付け位置指定 'y軸の範囲を取得----------------------------------------------------- For i = num_start To num_end If ran_item Is Nothing Then Set ran_item = worksheet_now.Columns(i * 2) Else Set ran_item = Union(ran_item, worksheet_now.Columns(i * 2)) End If DoEvents Next i 'グラフの設定--------------------------------------------------------------------------------------------------------------------------------------------- With MAKE_CHARTOBJECT.Chart .SetSourceData Source:=ran_item, PlotBy:=xlColumns .ChartType = xlXYScatterLinesNoMarkers '散布図平滑線ありマーカーなし End With End Function (マナ) 2014/10/16(木) 22:05 ---- >頂いたマクロも「With .ChartObjects.Add(0, 0, 500, 500).Chart」で停止してしまいました。 つまり、あいかわらずMookさん提示の1行コードでも停止するということですよね? 新規ブックでどうなりますか。データなしのまっさらシートで実行しても問題ないはずですが。 (マナ) 2014/10/16(木) 22:10 ---- マナさん 修正くださったコードを試してみました。 新規ブック(データなし)で実行した場合は問題なくオブジェクトが生成されます。 700×350の数値データが存在している場合はやはり停止してしまいました。 ****************************************************************************************************************************************** Function MAKE_CHARTOBJECT(num_start As Integer, num_end As Integer, worksheet_now As Worksheet) As ChartObject '変数========================== Dim i As Integer 'カウンタ Dim ran_item As Range 'y軸の範囲 '============================== 'グラフの作成===================================================================================================================================================== Set MAKE_CHARTOBJECT = worksheet_now.ChartObjects.Add(0, 0, 500, 500) 'グラフ貼り付け位置指定 'y軸の範囲を取得----------------------------------------------------- For i = num_start To num_end If ran_item Is Nothing Then Set ran_item = worksheet_now.Columns(i * 2) Else Set ran_item = Union(ran_item, worksheet_now.Columns(i * 2)) End If DoEvents Next i 'グラフの設定--------------------------------------------------------------------------------------------------------------------------------------------- With MAKE_CHARTOBJECT.Chart .SetSourceData Source:=ran_item, PlotBy:=xlColumns .ChartType = xlXYScatterLinesNoMarkers '散布図平滑線ありマーカーなし End With End Function Sub test() Dim co As ChartObject Set co = MAKE_CHARTOBJECT(1, 250, ThisWorkbook.Sheets(1)) End Sub ****************************************************************************************************************************************** (グラフカケナイネン) 2014/10/16(木) 23:19 ---- もう一度と思って試してみたら、確かにこちらでも再現しました。 データと別のシートにグラフを作成することならOKみたいです。 (マナ) 2014/10/16(木) 23:51 ---- なので、一度別のシートで作成し、それをカット&ペーストすればとりあえず可能みたいです。 (マナ) 2014/10/17(金) 00:04 ---- データ範囲外をたとえばシートの一番下を選択してから実行すればエラーがでないようです。 そういえば以前、似たようなことで半平太さんに教わったような気がします。 (記憶違い?) (マナ) 2014/10/17(金) 00:43 ---- マナさん 何度も検証ありがとうございました。 シートの一番下を選択する方法で試してみましたところ、 グラフを作成することが出来ました。 大変助かりました。感謝いたします。 コメントを下さった稲葉さん、Mookさん、マナさん お付き合いいただきありがとうございました。 (グラフカケナイネン) 2014/10/17(金) 01:09 ...
-
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201410/20141013225035.txt
- [detail]
- similar
PREV
NEXT
Powered by
Hyper Estraier 1.4.13, with 97008 documents and 608113 words.
訪問者: