• ベストアンサー

エクセルのシート中のデーターをMSchartでグラフ表示したい

エクセルを使うのだったらそのままグラフを表示させればよい。 と思われる方が多いだろうと思いながら質問させていただきます。 エクセル上でフォームを作成し、その上へMSchartコントロールを貼り付けます。 そして、現在アクティブになっているシートのA1~A20のデーターをもとにグラフを表示させたいと思っています。 この時、A1~A20のデーターを直接MSchartで読み込む方法がありますでしょうか。 よろしくお願いいたします。

  • elec2
  • お礼率61% (105/171)

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> やはり、一度、配列にコピーするしかなさそうですね。 #1 ご回答に補足します。Excel のシート自体が2次元配列のようなものです から、下記のようなソースがご希望に近いのかもしれません。 Private Sub UserForm_Initialize()      ' Activesheet にテストデータを用意   Dim r As Range   Dim n As Double   With ActiveSheet     .Cells.Delete     .Range("A2:A11").Formula = "=""ITEM""&TEXT(ROW()-1,""00"")"     .Range("B1:D1").Formula = "=""DAT""&COLUMN()-1"     n = 1     For Each r In .Range("B2:D11").Cells       r.Value = n       n = n + 1     Next   End With      ' MSChart コントロールに表示する   With Me.MSChart1     .ChartType = VtChChartType2dBar     .ChartData = Range("A1:D11").Value '<-- Value で配列を渡す     .TitleText = "Sample Chart"     .ShowLegend = True  ' 凡例の表示   End With End Sub ワークシート上のデータ変更と連動させたいなら、WithEvents で Change イベントを利用します。Userform1 を vbModeless 表示してデータを修正 してみて下さい。 Private WithEvents sh As Worksheet Private m_rDataTable As Range Private Sub UserForm_Initialize()      Set sh = ActiveSheet        ' Activesheet にテストデータを用意   Application.EnableEvents = False   Dim r As Range   Dim n As Double   With sh     .Cells.Delete     .Range("A2:A11").Formula = "=""ITEM""&TEXT(ROW()-1,""00"")"     .Range("B1:D1").Formula = "=""CAT""&COLUMN()-1"     n = 1     For Each r In .Range("B2:D11").Cells       r.Value = n       n = n + 1     Next   End With   Application.EnableEvents = True      ' MSChart コントロールに表示   Call GetDataRange   Call ShowChart End Sub ' // データ範囲( Range )をモジュールレベル変数にセットする Private Sub GetDataRange()   Set m_rDataTable = sh.Range("A1").CurrentRegion End Sub ' // MSChart コントロールに表示する Private Sub ShowChart()   With Me.MSChart1     .ChartType = VtChChartType2dBar     .ChartData = m_rDataTable.Value     .TitleText = "Sample Chart"     .ShowLegend = True  ' 凡例の表示   End With End Sub ' // Worksheet の Change イベント Private Sub sh_Change(ByVal Target As Range)   If Not Intersect(Target, m_rDataTable) Is Nothing Then     Call GetDataRange     Call ShowChart   End If End Sub

elec2
質問者

お礼

まだ試せていませんが、詳細なソース助かります。 参考にさせていただきます。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

参照設定 エクセルVBEの画面で、ツールー参照設定ーMS Chart Control 6.0 するとツールボックスにMSチャートのアイコンが増える。 それをUserForm1の上にD&D ーー データ シートのセルA1:A10の値を配列に入れる。 グラフの種類は http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=118&no=1 に解説がある。 グラフの種類は下記より選択 ' VtChChartType3dBar '3 次元バー ' VtChChartType2dBar '2 次元バー 以下略。 ーーー グラフのプロパティ あとプロパティは、MsChartのプロパティボックスの、英字見出しを参考に、決める値を代入して、設定する。 書きコードを実行すると、10本の棒グラフができる。 ほか参考 http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=118&no=0 ーーー 下記は十分ではないが大筋は Private Sub UserForm_Initialize() '--エクセルセルデータの配列化 Dim dt(10) Dim lb As String For i = 1 To 10 dt(i) = Cells(i, "A") Next i '--- With MSChart1 .ChartType = VtChChartType2dBar .ChartData = dt .Row = 1 .RowLabel = "日別" .ColumnLabel = "出席者数" .TitleText = "エクセルデータ" .ShowLegend = True End With End Sub

elec2
質問者

お礼

やはり、一度、配列にコピーするしかなさそうですね。 ありがとうございました。

関連するQ&A

  • Imageコントロールにグラフを表示させるには

    Excel VBAでフォームにイメージコントロールを配置して、そこにエクセルで作成したグラフ(グラフシート)を表示するようなプログラムは作成可能でしょうか? 例えば、 まずワークシートのデータを元にグラフ(グラフシート)を作成し、作成したグラフをフォーム上のイメージコントロールに表示させる一連の作業をVBAでプログラミングできるかどうかということです。 Userform1.MultiPage1.Image1.Picture = .........といった感じです。 もしくは、作成したグラフをgif形式の画像として特定のディレクトリなりフォルダに保存して、その画像ファイルを読み込むことで対応はできるでしょうか? よろしくお願いします。

  • ExcelVBA グラフシートに表示するデータテーブル

    エクセルのVBAでグラフを作成するのですが、良い方法がなく、困っています。例えば、次の2つのテーブルがあり、 テーブルA   項目1|項目2 7/1 49.99|51.01 7/2 58.25|58.01 7/3 38.85|48.69 テーブルB   項目1|項目2 7/1 10| 12 7/2 15| 15 7/3 12.5| 20 テーブルAの値を使ってグラフを作成し、グラフシートに表示するデータテーブルはテーブルBの値を表示させたいのです。 VBAでなくても、手動の方法でもかまいません。 このようなグラフシートは出来るのでしょうか。ご教示ください。

  • Excel グラフのデータシートについて

    教えてください! Excelでグラフを作成しています。 棒グラフで下にデータテーブルを追加しました。 (グラフオプション→データテーブル→データテーブルを表示) そこで、実際の棒グラフにはデータを表示したまま、 下のデータテーブルの1項目を非表示にしたいのです。 例えば、 棒グラフは、A,B,C,D項目が表示されているが、 データテーブルには、A,B,Dと表示させたいです。 そのようなことができるのでしょうか? 初心者のため、細かく教えていただけると助かります。 どうか教えてください。

  • エクセルデータをVB2008のMSChartでグラフ化する方法を教えてください!!

    はじめまして。VB初心者です。 エクセルからデータを取り出し、VB2008のMSChartコントロールを使って、マーカー無しの平滑線の散布図を作ろうと思っています。まだVB初心者で、プログラム作るのに苦労しています(汗)。エクセルから下記のようにランダムにデータを取り出して表示する方法わかる方いましたらご教示お願いします。(サンプルコードありましたら助かります!!) ★VB2008のMSChartコントロールで下記のように表示したいです!! (1)エクセルにあるデータは、A1からデータがはじまっているのではなく、AFの3からはじまり、3,6,9,12(行)に系列ごとにデータが入力されます(下記のエクセルデータ例参考)。 (2)VBでの表示は下記のエクセルで作ったグラフのようにしたいです!!データはエクセルデータの行に入力されている黄色の部分です。(X軸目盛りは1単位となります)、 (3)系列はエクセルの行となり、表示は系列をすべて重ねて表示します。(系列の数は列のセルの最後まである場合があります) 参考にエクセルでグラフ作りましたのでみて頂ければ幸いです

  • エクセルVBAでグラフ表示

    エクセル2002使用です。 ユーザーフォームを作り、そこにコマンドボタンを置いています。コマンドボタンをクリックすると、ワークシート上にあるグラフを表示したいのですが・・・ Private Sub CommandButton1_Click() Charts("Graph4").Select Charts("Graph4").Activate End Sub 問題が2つ出てしまいました。 1.ワークブック内でシートは切り替わるのですが、グラフがユーザーフォームの後ろに隠れてしまったままでユーザーフォームの手前に表示できない。 2.グラフ(シート)を表示した後、ユーザーフォームに戻る方法がわからない。 ユーザーフォームからシートにあるグラフを表示させたい場合は、どのような方法がベストなのでしょうか?できれば、ユーザーフォーム上ですべてを行いたいのですが、グラフ作成のコードも新たに作らないと駄目なのでしょうか? 質問の仕方も難しく説明不足かもしれませんが、よろしくお願いします。

  • エクセル2007 グラフ 貼り付け

    現在、エクセル2007でグラフを作成し、データ範囲と グラフは同一シート内です、そのまま別シートに貼り付けし 他データ及びグラフを作成したいのですが。 貼り付けると、グラフが図形式で貼り付けになり データを入力してもグラフに反映されません よい方法あればお願いいたします

  • エクセルでグラフを新規シートに作成する方法はありますか?

    エクセルでグラフを新規シートに作成する方法はありますか? エクセル2007を使っています。OSはXPsp3 グラフを新規シートに作成することが過去のエクセルでは可能でしたが(データを範囲指定して「グラフの作成」-「新規シートで作成」というコマンドが選べたと思うのですが)、2007ではできないのでしょうか?データのあるシート上で作成することしか出来ないのですが。グラフウィザードとかはありません。 2007版で改悪された印象しかなく、マイクロソフトには怒りを覚えます。 どなたかおわかりの方、新規シートでグラフを作成する方法がありましたらご教授ください。 よろしくお願いいたします。

  • 作成したグラフを1シートに複数表示。。

    ここで質問をいたしまして、 質問内容が 「Excelでグラフを作りました。 グラフウィザードで元データとは別に新規シートにグラフを作成したので、シートいっぱいがグラフの画面になっています。そういったシートがブックに複数あります。 (グラフのシート数) 一つのシートに一つのグラフになっています。 それを一つのシートに3つぐらいのグラフにとまとめたいのです。どうすればいいですか?」 という質問に 「グラフシートの上で右クリックして 場所をクリックします オブジェクトを選び まとめたいsheet名を選びます(または 入力します) これを 繰り返してください」 という回答をいただきました (gogogo123さま、ありがとうございます) たしかにできまして、プレビュー表示にすると、 (一つのシートに上下に2つグラフを置きました) 少し小さかったもので、すこしそれぞれのグラフを 大きくしました。 すると。。。プレビュー画面で一つのグラフだけシートいっぱいに表示され、一つのシートに複数のグラフを表示したいという希望は満たされなくなりました。。。 ちらっとダイヤログがでまして、3万2000以上のデータ要素のグラフは作成できません。。というようなものがでたような気がします。たしかにグラフ元データはかなり膨大です。だからなのでしょうか。。。 こうなったら1つのシート(紙)に複数(3つほど) のグラフを表示するには、地道に、ワードなどに 貼り付けるしか方法がないでしょうか?

  • VBA フォームでチャートグラフ作成 Excel

    Excel2003を使用しています。 フォームのコントロール(ChartSpace)Microsoft Office Chart 11.0 を利用することにしました。 これを利用し、UserForm1にチャートグラフを作成したいと考えています。 データがあるシートを参照し、グラフを作成し、 フォーム上に表示したいです。 複数のグラフを表示する方法も教えて頂けるとありがたいです。 よろしくお願い致します。

  • エクセルのグラフについて教えて!

    エクセルでグラフを作成して、グラフを右クリックして元のデータを表示します。 系列のタブの『値』にグラフに表示される値(参照セル)を入力する訳ですが、そこに数式を入力するのは可能でしょうか? 例えば通常は =Sheet1!$A$1:$N$1 のようにセルの範囲を指定しますが、そこに=Sheet1!($A$1/$A$2):$N$1/$N$2)のように数式を入れてグラフを完成させたいんです。 エクセルのシートで数式を計算し、その範囲を参照するようにしたらいいのですが、今回はその方法は使えないので質問します。

専門家に質問してみよう