• ベストアンサー

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

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

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

下記などご参考に: http://www.moug.net/tech/exvba/0090032.html 注目: 「ChartSpaceコントロールのチャートはデータ ソースにSpreadSheet,DataSource,など他のOWCコントロールを指定するほか、コンマ区切りデータや1次元配列から作成できます」 ワークシート上のデータを直接リンクできない、という意味です。 作成例: Private Sub UserForm_Initialize()  Dim dat As Range  Dim dcat, dv1, dv2  Dim scol  Set dat = ActiveSheet.Range("A1").CurrentRegion  Set dat = dat.Offset(1).Resize(dat.Rows.Count - 1)  dcat = Application.WorksheetFunction.Transpose(dat.Columns(1))  dv1 = Application.WorksheetFunction.Transpose(dat.Columns(2))  dv2 = Application.WorksheetFunction.Transpose(dat.Columns(3)) '複数のグラフ  With Me.ChartSpace1   With .Charts.Add    .Type = chChartTypeRadarLine    .SetData chDimCategories, chDataLiteral, dcat    Set scol = .SeriesCollection.Add    .SeriesCollection(scol.Index).SetData chDimValues, chDataLiteral, dv1    Set scol = .SeriesCollection.Add    .SeriesCollection(scol.Index).SetData chDimValues, chDataLiteral, dv2   End With  End With End Sub

satoron666
質問者

お礼

回答ありがとうございます。 試してみます!

関連するQ&A

  • ユーザーフォームでのグラフ表示

    今,エクセルのユーザーフォームでグラフを表示させたいのですが,うまくいきません. ユーザーフォームを作成しているブックとは違うブックのシート1にデータ,このデータを使用してsheet2にグラフを作成しています.このグラフを違うブックで作成しているユーザーフォームで表示させたいのです. 今,組んでいるマクロは以下のようになっています. Sub point1() openfilename = "1F-1.xls" folderpath = "G:\関電営業所\相生営業所\20110928 関電相生営業所収集データ\おんとり\text\Excel\" Ofilenamepath = folderpath & openfilename Workbooks(openfilename).Worksheets(2).ChartObjects(1).Chart.Export ThisWorkbook.Path & "\Chart1.gif" UserForm1.Image1.Picture = LoadPicture(Ofilenamepath & "\Chart1.gif") UserForm1.Show End Sub 上から5行目のところでエラーが出てしまいます. エラーは「オブジェクトが不正です」とでます. どなたか解決方法を教えてください。

  • Excel VBA グラフ作成

    グラフを複数、自動で作成しようと思っています。 データは、 がっつり A  1 B  3 C  5 D  8 E  10 しっとり A  3 B  5 ・ ・ ・ 最初に「しっとり」などのような項目名が記してあり、 その後5行はデータになっています。 Aを選択した人が3人、Bを選択した人が5人などの意味です。 A2からデータが入っており、 グラフを作る個数は決まっておらず、表の個数により作成したいと思っています。 「Sheet1」にグラフを自動で作成するにあたり、 3つ質問があります。 マクロに「SampleGraphという名称で作ってみました。」 ----------------- Sub Sample_Graph() Dim i As Long Dim SampleChart As Shape i = 2 Set SampleChart = Worksheets("Sheet1").Shapes.AddChart With SampleChart.Chart .SetSourceData Range("'Sheet1'" & "A" & i + 1 & ":" & "B" & i + 6) .ChartType = xlColumnClustered .HasTitle = True .ChartTitle.Text = Range("A" & i) End With i = i + 7 End Sub ------------------------------ 質問1 実行すると、Set SampleChart = Worksheets("Sheet1").Shapes.AddChartのところで エラー438が出ます。どうしてこのエラーが出るのでしょうか? フォームにプログラムを書いて組んでいるのですが・・・ (フォームのボタン1をクリックしたら実行するようにしています) 質問2 グラフのサイズを決め、個数によって配置を変えたりしたいです。 Inputboxを使い、 ”何列にしますか?”というメッセージを表示 そして、数値を入力すると 3列でグラフ表示される 質問3 図のように、項目名とは別に 「Yes」「No」などを表示させたいです。 データに含むとおかしくなりますし、 かといってタイトルや系列名を変えることも難しいかと。 何か良い方法はありませんか? 以上、質問3点長々と書かせて頂きました。 分かりにくい点が多々ありますが、よろしくお願い致します。 せめて、グラフを作れるようにはなりたいと思っています!

  • Excelでの複数のシート間のグラフ作成

    Excel2002及び2003で複数のシートでグラフ作成の仕方を教えていただけないでしょうか。 例えば、Sheet1の表とSheet2の表のデータを基にSheet3にグラフを作成したいのです。 確かに、Sheet3にSheet1とSheet2のグラフをまとめた表を作成すれば、簡単にできるのですが、 データ量が多いためにまとめるのが困難です。 また、応用として、ブック間のデータを基にグラフを 作成できるのでしょうか。 よろしくお願いします。

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

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

  • EXCEL2010 VBA グラフの作成

    EXCEL2010のVBAで自動でグラフを作成するコードを作成したいと思っています。 シート1のA1:A10にデータが入っていて、ボタンを押すとコードが実行されて A1:A5までが系列1 A6:A10までが系列2 として表示される折れ線グラフを作成しようと思っています。 さらに作成したグラフは新規にシートを作成して作成したシートに表示させたいと思います。 このような処理を行いたいのですがVBAを始めたばかりなのでグラフの作成くらいしかまだ 分かっていません。 どなたかこの処理を実現できる良い方法を教えてください。よろしくお願いします。

  • vc++ グラフ作成

    visual c++ (visual studio)において、等高線グラフを表示させたいです。 等高線グラフの画像イメージを張り付けておきます。 http://www.fastpic.jp/images.php?file=0669754988.gif 3D点(x,y,z)の点(データ)を線で結びつけて、色付けしたものです。 【質問1】 この等高線を作成する手法、手段を教えて下さい。 ちなみに、チャートコントロール(mschar)↓では等高線をサポートしておらず、実現できません。 System::Windows::Forms::DataVisualization::Charting::Chart 【質問2】 Microsoft.Office.Tools.Excel.Char の用途/導入方法を教えて下さい。 Excelグラフでは等高線があり、添付画像もExcelで作成したので、 Excelのアドイン?みたいな物でグラフを作成して、それをFormに張り付ける、 的なことができるのかな、とも思いまして… ググってみたところ、Microsoft.Office.Tools.Excel.Char でグラフを作成できるのかな、 と思いました。 Microsoft.Office.Tools.Excel.Charの使い方というか、 そもそもこいつは何をするためにあるものでしょうか? 望みのことができますか? できるなら、どのように導入(参照設定やら名前空間やらツールボックスやら)できますか? [環境] visual c++ expressです。 visual studio 2012 へのアップグレードを検討中です。 よろしくお願いします。

  • 【Excel】リストボックスからのグラフ表示方法

    教えてください! 今、フォームで表示されたリストボックスから一つ項目を選択しOKボタン(CommandButton1)を押すと、すでに別のワークシートに作成されたグラフが今開いているシートにユーザーフォームで表示されるというファイルを作成しています。 グラフがユーザーフォーム内に表示されるというのは出来たのですが、項目数が7つあるリストボックスからそれぞれ選択すると、 AAA→グラフ1 BBB→グラフ2 CCC→グラフ3 DDD→グラフ4  ・  ・  ・ という風に「リストボックスのこの文字を選択しOKボタンを押すと、このグラフが表示されるようにする」といったようなマクロを完成させたいのです。 ちなみにグラフが表示されるようにするのに、以下のような記述をしました。 ------------------------------------------------- Worksheets("グラフ1").ChartObjects(1).Chart.Export ThisWorkbook.Path & "\Chart1.gif" UserForm1.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Chart1.gif") UserForm1.StartUpPosition = 1 UserForm1.Show ------------------------------------------------- 困っています。 教えてください。宜しくお願いいたします。

  • Excelのグラフを動的に作成したい。

    Excelのバージョン:2002 Excelのグラフ機能を使ってグラフを作成しており、「名前の定義」を利用して ドロップダウンリストの中身でグラフが変化するところまでは出来たのですが 本来の目的が上手く行きません。 以下に、自身で作成した変化するグラフの手法を書きます。 0:項目軸と値にそれぞれA~Eまでの5種類のパターンがあるデータを用意。 1:項目軸A~Eまでのデータ範囲にそれぞれ「項目軸A」、「項目軸B」…… と名前の定義をする。 2:値A~Eまでのデータ範囲にそれぞれ「値A」、「値B」…… と名前の定義をする。 3:A1セルにA~Eまでのドロップダウンリストを作成する。 4:「名前の定義」から「sheet1!項目軸(シート固有)」という名前で参照範囲に「=INDIRECT("項目軸"&sheet1!$A$1)」と入力する。 5:「名前の定義」から「sheet1!値(シート固有)」という名前で参照範囲に「=INDIRECT("値"&sheet1!$A$1)」と入力する。 6:グラフツールを使って棒グラフを作成。 グラフの「元のデータ」にて、「系列」タブを開いて系列を追加。  値に「sheet1!値」、項目軸ラベルに「sheet1!項目軸」を入力してグラフを作成。 7:ドロップダウンを変化させると、ドロップダウンの表示に対応したグラフが表示される。 本来の目的は、 3のA1セルに自身のシート名を取得する式を記入して、このシートを複数作成し、 シート名をA、B、……と変更する事によって、自動的にグラフが変化していく物を作りたいのですが シートを複製した途端、グラフの「項目軸」と「値」に{100,200,……}と言った形で実際の値がコピーされてしまいます。 なんとか上手く作成する方法はありますでしょうか? ご教授の程、よろしくお願い致します。

  • Excel VBA ユーザーフォームについてs

    ExcelVBAでユーザフォームを作成していますが行き詰まっています。 お助け下さい m(__)m VBAの処理内容を新Sheetへ保存し、 その内容をユーザフォームへWorkSheetとして表示させて エンドユーザに直接編集してもらおうと思っています。 ユーザフォームの『コントロールの追加』で「Microsoft Office Spreadsheet XX.X」を追加して 空のWorkSheetを追加することは出来たのですが、 このWorkSheetを空でなく前出の処理内容を反映したSheetにすることは出来るでしょうか? VBA処理 ⇒ 結果反映WorkSheet(1)作成 ↓ ユーザフォーム表示 : (1)を表示したい よろしくお願いします。

  • レーダーチャートをはみ出させるには

    Microsoft Office Excel 2003 (Microsoft Office Personal Excel 2003) OS: Microsoft Windows XP Professional Service Pack 3 Browser: Google Chrome (BETA) 0.2.149.29 仕事でレーダーチャートを作成しています。 多くのデータが 100% 以内に収まっているのですが、440% という莫大な外れ値が存在するために、(数学的には間違っていないのですが) グラフが見にくくなってしまっています。 明日行うプレゼンテーション用のチャートなので、特に 100% の Y/ 数値軸目盛を目立たせたく、440% のところは目盛りの外にはみ出させたいと思っています。 つまり、目盛りの最大値を 100 にして、それ以上のデータは線を外にはみ出させたいということです。 Excel でこのような芸当は可能なのでしょうか ? ご回答よろしくお願いいたします。

専門家に質問してみよう