advanced help
per page, with , order by , clip by
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.

訪問者:カウンタValid HTML 4.01 Transitional