プロが教えるわが家の防犯対策術!

教えてください!

今、フォームで表示されたリストボックスから一つ項目を選択し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
-------------------------------------------------

困っています。
教えてください。宜しくお願いいたします。

A 回答 (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

この回答への補足

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

補足日時:2005/07/20 23:03
    • good
    • 0

分岐の話だけという認識で回答します。


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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/07/20 23:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!