dポイントプレゼントキャンペーン実施中!

エクセルマクロでスライドショーのようなことをやりたい
参考書だけでマクロに挑戦している超初心者です。
セルに写真の名前が並んで入れてあります。
ユーザーフォームにイメージとコマンドボタンを配置
ボタンを押すとスライドショーが始まるようにしたい。
次のように作ってみたが、セルは移動するが
写真は途中変わらず、最後の写真だけ表示される。
ところがもう一度ボタンを押すときちんと一枚づつ表示する。
 参考書には、「変数iは1回目は定義されていないが
2回目は記憶している」というようなことが書かれていますが
このことと関係しているのでしょうか?

Private Sub CommandButton1_Click()
Dim i As Integer
Dim ImgName As String
For i = 1 To 5
Application.Wait (Now + TimeValue"0:0:01"))
ImgName = ActiveWorkbook.Path & "\" & ActiveCell.Value
Image1.Picture = LoadPicture(ImgName)
ActiveCell.Offset(1, 0).Activate
Next i
Exit Sub
End Sub
実はフォーム上には、その他のものもあるのですが
質問用にこれだけを作り実行してみたところきちんと
1枚づつ表示されました。
ほかの要素が入っていると、1回目のみ、途中が表示されないという
現象が現れるようです。
質問の仕方が悪くて申し訳ありません。よろしくお願いします。

A 回答 (2件)

こんにちは。


私の環境(win2000/xl2000)では
>もう一度ボタンを押すときちんと一枚づつ表示する。
とはなりませんでしたが、とりあえず
>Image1.Picture = LoadPicture(ImgName)
の下に
DoEvents
の1行を挿入してみてください。

この回答への補足

申し訳ありません。
回答をいただいて、すぐ試したとき間違いました。
 ご指導いただきましたとおり「DoEvents」で期待する結果が得られました。ありがとうございました。

補足日時:2007/07/11 22:11
    • good
    • 1
この回答へのお礼

早速ありがとうございます。
 残念ながら「DoEvents」では変化はおきませんでした。

お礼日時:2007/07/11 21:55

解決のようですが、一応。


今回のケースは
>DoEvents
より
Me.Repaint
が良かったかもしれません。
    • good
    • 0
この回答へのお礼

大変ありがとうございました。
超初心者で、初めての質問。
お礼ポイントのつけ方がわかりませんので失礼します。

お礼日時:2007/07/12 11:17

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