ユーザーフォームにグラフを表示するには?

Question 55.4 Previous Next
いつも楽しみに拝見しております。このようなことができるでしょうか?
ユーザーフォームに、セルデータを読み込んだXYグラフ(横断面図)を、作成することはできるでしょうか? (X軸(名称)、目盛、Y軸(名称)、目盛をつける等)
VBみたいに LinE(***)っていうのは使えないみたいです。いったいどのような方法を使えばよいでしょうか。
入力中にデータチェックができないものかと思っています。
Answer   Copyright (C) 2002.9.12 永井善王
ご質問のポイントはXYグラフの作成方法ではなくて、どうすれば、作成したグラフをユーザーフォームに表示することができるか、その方法を知りたいということでしょうか。
結論から言うと、ユーザーフォームに直接、グラフを作成することは、Excelの標準機能だけではできないと思います。

しかし、グラフウィザードを利用してグラフをワークシートに作成しておけば、必要なときに、そのグラフをマクロを使ってユーザーフォームに表示することが可能です。

簡単なグラフの例で考えてみましょう。Sheet1のデータで Sheet2にグラフが作成されているとします。
 Sheet1                                   Sheet2 Sheet1 Sheet2
 UserForm1
UserForm1
ユーザーフォームには、イメージコントロールを埋め込んでおきます。

この状態で下記のマクロを実行すれば、左図のとおり表示されます。

コードの説明
ラインNo.10  Sheet2のグラフをエクスポートする
ラインNo.20  エクスポートファイルをイメージに読み込む
ラインNo.30  ユーザーフォームを表示する
'------------------------------------------------------------------------------
Sub ワークシートのグラフをユーザーフォームに表示する()
10  Worksheets("Sheet2").ChartObjects(1).Chart.Export ThisWorkbook.Path & _
        "\Chart1.gif"
20  UserForm1.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Chart1.gif")
30  UserForm1.Show
End Sub
'------------------------------------------------------------------------------
Export メソッド
機能 グラフを図形形式でエクスポートする
構文 expression.Export(FileName, FilterName, Interactive)
expression Chart オブジェクトを返すオブジェクト式を指定する(必須)
FileName  エクスポートするファイル名を文字列型 (String)で指定する(必須)
FilterName レジスタに表示される図形フィルタの言語独立型の名前をバリアント型 (Variant) で指定する(省略可)
Interactive フィルタ固有のオプションを含むダイアログボックスを表示するには True を設定する(省略するとフィルタの既定値が使用される)

Pictureプロパティ
機能 オブジェクトの上に表示するビットマップを設定する
構文 object.Picture = LoadPicture( pathname )
object   オブジェクトの名前を指定する
pathname ピクチャファイルの絶対パスを指定する

 

Excel VBA Macro