Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3945 / 13644 ツリー ←次へ | 前へ→

【59320】画像の連続表示 ふうか 08/12/6(土) 10:52 質問[未読]
【59322】Re:画像の連続表示 neptune 08/12/6(土) 12:19 回答[未読]
【59325】Re:画像の連続表示 neptune 08/12/6(土) 13:03 発言[未読]
【59339】Re:画像の連続表示 ふうか 08/12/7(日) 10:04 お礼[未読]

【59320】画像の連続表示
質問  ふうか  - 08/12/6(土) 10:52 -

引用なし
パスワード
   目的
クリックイベントで表示された画像を、別のクリックイベントで次々に表示させた終わったら最初の画像を表示と繰り返して処理をしたいと思っています。

case1が処理される時、トグルボタンが押されていたら画像表示
Private Sub CommandButton1_Click()  
  p_name = ComboBox1  
  pic_name = 1  
  Select Case p_name
    Case "ma"
      TextBox2 = Range("B2")
      TextBox3 = Range("C2")
      TextBox4 = Range("D2")
  If ToggleButton1 = True Then
    Image1.picture = LoadPicture("D:\VBA\test" & pic_name & ".bmp")
  End If      
    Case "mb"
      TextBox2 = Range("B3")
      TextBox3 = Range("C3")
      TextBox4 = Range("D3")
  End Select
End

2.test1の画像が表示されてる時にtest2→test3と表示させたい
Private Sub CommandButton2_Click()
  pic_name = 1
  Select Case pic_name
    Case 1
          pic_name = pic_name + 1
    Image1.picture = LoadPicture("D:\VBA\test" & pic_name & ".bmp")
  Case 2
    pic_name = pic_name + 1
    Image1.picture = LoadPicture("D:\VBA\test" & pic_name & ".bmp")
  Case 3
    pic_name = pic_name + 1
    Image1.picture = LoadPicture("D:\VBA\test" & pic_name & ".bmp")
 end

3.グローバル変数で共通にカウントする様にしてる
  Public pic_name As Integer

現在は上記状態で色々やってる所ですが、case2の所で処理が終わってしまい
case3の処理が行われません・・・・・
何かカウンターみたいな加算処理(++1みたいなinc)で一回ずつ動かせばいいかな・・・ってやってみたんですが出来ませんでした。
何かアドバイスをお願いします。

【59322】Re:画像の連続表示
回答  neptune  - 08/12/6(土) 12:19 -

引用なし
パスワード
   ▼ふうか さん:
こんにちは

ササッとサンプル書いてみました。

Private Sub CommandButton1_Click()
  Call t
  Call t
  Call t
  Call t
  'カウンタを0に戻したいときは pClear =true
  Call t(true)
End Sub


Sub t(Optional pClear As Boolean = False)
  Static pic_name As Long
  
  If pic_name = 0 Then
    pic_name = 1
  ElseIf pic_name > 3 Then
    pic_name = 1
  End If

  
  Select Case pic_name
    Case 1
      Debug.Print pic_name
    Case 2
      Debug.Print pic_name
    Case 3
      Debug.Print pic_name
  End Select
  
  If pClear = True Then
    pic_name = 0
  Else
    pic_name = pic_name + 1
  End If
  
End Sub

【59325】Re:画像の連続表示
発言  neptune  - 08/12/6(土) 13:03 -

引用なし
パスワード
   すみません。こうですかね。
なんかロジックに隙と無駄がありそうなんで。適当に改造してみて下さい。
要はStatic を使えばどうですかと言うだけの提案ですので。

Sub t(Optional pClear As Boolean = False)
  Static pic_name As Long
    
  If pClear = True Then
    pic_name = 0
  End If

  If pic_name = 0 Then
    pic_name = 1
  ElseIf pic_name > 3 Then
    pic_name = 1
  End If

  
  Select Case pic_name
    Case 1
      Debug.Print pic_name
    Case 2
      Debug.Print pic_name
    Case 3
      Debug.Print pic_name
  End Select
  pic_name = pic_name + 1

End Sub

【59339】Re:画像の連続表示
お礼  ふうか  - 08/12/7(日) 10:04 -

引用なし
パスワード
   ありがとうございます。
色々あるんですね・・・・まずは試してみます!
助かりましたぁ〜

3945 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free