• ベストアンサー

【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 ------------------------------------------------- 困っています。 教えてください。宜しくお願いいたします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 Worksheets("グラフ1").ChartObjects(1).Chart.Export ThisWorkbook.Path & "\Chart1.gif" これは、別にエキスポートしてください。ユーザーフォームが起動のたびに、エキスポートする必要はありませんから。7個あったら、それぞれ名前を確認して、出力してください。 For i = 1 to 7 Worksheets("グラフ1").ChartObjects(i).Chart.Export ThisWorkbook.Path & "\Chart"& i &".gif" Next i などとします。 サンプルコードです。現在は、4個しかありませんが、やり方はお分かりになると思います。配列で、名称とグラフのGif名とを連動させます。 '<ユーザーフォームモジュール> Dim myCharts As Variant Private Sub CommandButton1_Click()  i = Me.ListBox1.ListIndex  Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & myCharts(i)) End Sub 'この部分は余計かもしれません Private Sub ListBox1_Click()  MsgBox "リストボックスのこの文字を選択しOKボタンを押すと、" & ListBox1.Value _ & "のグラフが表示されます。" End Sub Private Sub UserForm_Initialize() Dim ListArray As Variant  ListArray = Array("AAA", "BBB", "CCC", "DDD")  myCharts = Array("Chart1.gif", "Chart2.gif", "Chart3.gif", "Chart4.gif")  Me.ListBox1.List = ListArray End Sub

froma_a
質問者

補足

お返事が遅くなってしまい、申し訳ありません。 ちなみに「グラフをエキスポートする」というのはどういうことなのでしょう? ちなみにグラフは同じブック内のデータとリンクしており、データは頻繁に変更されます。 フォームのグラフはその都度、シートから呼び出されるようにしたいのですが。 よろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ctrlzr
  • ベストアンサー率29% (18/62)
回答No.1

分岐の話だけという認識で回答します。 list1は、リストボックスの名前です for i=0 to list1.listcount -1 if (list1.selected(i)) then if list1.list(i) = "AAA" then 'グラフ1のよびだし elseif list1.list(i) = "BBB" then 'グラフ2のよびだし elseif list1.list(i) = "CCC" then 'グラフ3のよびだし end if end if next

froma_a
質問者

お礼

お礼が遅くなってしまい、申し訳ありません。 分岐させるというのは上記のようなやり方でできたんですね! どうもありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A