Excel VBA質問箱 IV

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

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


34023 / 76733 ←次へ | 前へ→

【47925】Re:マクロをバックグラウンドで実行
発言  ichinose  - 07/3/26(月) 20:06 -

引用なし
パスワード
   こんばんは。

見ている方が全員同じものを見ていないと中々こういう
問題は処理しづらい と思いませんか?

新規ブックにユーザーフォーム(Userform1)だけ作成してください。
(コントロールは、動的に作成しますから、要りません)

標準モジュールに

'===========================================================
Sub main()
  Dim i As Long
  With Cells(1, 1)
    .value = 0
    Call init_progress_form
    Do Until .value = 20000
     Call set_progress_form(.value, 20000, "実行中")
     .value = .value + 1
     Loop
    Call term_progress_form
    End With
End Sub

別の標準モジュールに
'===============================================================
Option Explicit
Sub init_progress_form()
  With UserForm1
    .Width = 270
    .Height = 114
    With .Controls.Add("Forms.Label.1", , True)
     .Name = "Lbl状態"
     .Left = 12
     .Top = 12
     .Width = 60
     .Height = 18
     .Font.Size = 14
     .TextAlign = 2
     .SpecialEffect = 2
     End With
    With .Controls.Add("Forms.Label.1", , True)
     .Name = "Lbl総計"
     .Left = 12
     .Top = 42
     .Width = 200
     .Height = 18
     .SpecialEffect = 2
     .ForeColor = &HFFFFFF
     .TextAlign = 2
     End With
    With .Controls.Add("Forms.Label.1", , True)
     .Name = "Lblパーセント"
     .Left = 216
     .Top = 48
     .Width = 30
     .Height = 12
     .SpecialEffect = 0
     .TextAlign = 3
     End With
   
    With .Controls.Add("Forms.Label.1", , True)
     .Name = "Lblバー"
     .Left = 12
     .Top = 42
     .Width = 0
     .Height = 18
     .SpecialEffect = 0
     .BackColor = &H800000
     End With
    .Show vbModeless
    End With
End Sub
'===============================================================
Sub set_progress_form(value As Variant, amount As Variant, Optional status As Variant = "")
  With UserForm1
    .Controls("LBl状態").Caption = status
    .Controls("Lblパーセント").Caption = Format(value / amount, "0%")
    .Controls("Lblバー").Width = .Controls("Lbl総計").Width * value / amount
    DoEvents
  End With
End Sub
'===============================================================
Sub term_progress_form()
  Unload UserForm1
End Sub


これでmainを実行して別のタスクをアクティブにして試してください。
勿論、アクティブにしたタスクがCPUを握りっぱなしなら、そりゃあ動作は止まりますが、
通常のHPを表示しているIE等に切り替えても上記のmainは作動していますよ!!

尚、バックグラウンドのプログラムについて

HTTP://winxp.1123.info/010/post_2.html
(頭のHTTPは直してください)

こんな情報もありますから、参考にしてください。
2 hits

【47910】マクロをバックグラウンドで実行 VBA初心者 07/3/26(月) 13:43 質問
【47921】Re:マクロをバックグラウンドで実行 Jaka 07/3/26(月) 17:14 発言
【47923】Re:マクロをバックグラウンドで実行 VBA初心者 07/3/26(月) 18:29 発言
【47925】Re:マクロをバックグラウンドで実行 ichinose 07/3/26(月) 20:06 発言
【47927】Re:マクロをバックグラウンドで実行 VBA初心者 07/3/26(月) 23:34 お礼
【47928】Re:マクロをバックグラウンドで実行 iino 07/3/27(火) 1:45 質問
【47930】Re:マクロをバックグラウンドで実行 ichinose 07/3/27(火) 7:46 発言
【47940】Re:マクロをバックグラウンドで実行 iino 07/3/27(火) 10:45 発言
【47942】Re:マクロをバックグラウンドで実行 Jaka 07/3/27(火) 11:02 発言
【47945】Re:マクロをバックグラウンドで実行 iino 07/3/27(火) 13:40 発言
【47947】Re:マクロをバックグラウンドで実行 Jaka 07/3/27(火) 15:01 発言
【47949】Re:マクロをバックグラウンドで実行 ichinose 07/3/27(火) 19:46 発言
【47953】Re:マクロをバックグラウンドで実行 iino 07/3/27(火) 20:45 お礼

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