• ベストアンサー

マクロ実行中のメッセージ表示

お世話になります。 Excel2000マクロ実行中に、「処理中です」等のメッセージを表示したいのです。メッセージのUserFormを作成しましたが、マクロ実行中は、Caption(Formのタイトル部分)以外は、Formが白く表示されるだけです。ステップインで確認する時は正常に表示されます。 コードは、標準モジュールに UserForm1.Show (0) としました。 よろしくお願いいたします。 ※UserFormを使用する以外にも、メッセージを表示する方法があれば、それでも結構です。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

下のようにすればユーザーフォームを表示できないでしょうか。 ご参考に。(当方、Excel2000です) Sub UserFormShowTest()   'テスト用マクロの行カウンタと合計用変数   Dim rw As Long   Dim TTL As Double   'ユーザーフォームによるメッセージ表示   UserForm1.Show vbModeless   DoEvents     '何かマクロを実行する     For rw = 1 To 60000       TTL = TTL + Cells(rw, 1)     Next   'メッセージ用のユーザーフォームを閉じる   UserForm1.Hide   '何かマクロを実行(後処理があれば)   MsgBox "合計は " & TTL End Sub

hawk-k
質問者

お礼

ありがとうございます。私の要望どうりの結果が得られました。※以前も私の質問に回答していただきました。感謝いたします。

その他の回答 (2)

回答No.3

初めまして。私の持っている参考書に貴方様の思い通りの操作をするサンプルマクロが記載されていました。そのマクロをお知らせいたします。 Private Sub CommandButton1_Click() Dim myStep As Single Dim i As Long, j As Long With Me.Label3 myStep = .Width / 100 .Width = 0 .BackColor = &HFF0000 Me.Label1.Caption = "実行中です・・・" Randomize For i = 1 To 100 For j = 1 To 10 With ActiveSheet.Cells(i, j) .Interior.ColorIndex = Int(56 * Rnd + 1) .Value = .Interior.ColorIndex End With Next j .Width = .Width + myStep Me.Label4.Caption = i & "%" DoEvents Next i Me.Label1.Caption = "処理が終了しました。" End With   Unload Userform1 End Sub ユーザーフォームを1個挿入しフォーム上にラベルを4個・コマンドボタンを1個配置する。 ラベル1(作業状態を表示するラベル。) オブジェクト名:Label1 Caption:ボタンを押して処理を開始して下さい。 ラベル2(プログレスバーの枠の部分となるラベル) オブジェクト名:Label2 Caption:空白 SpecialEffect:2 ラベル3(プログレスバーのバーの部分となるラベル) オブジェクト名:Label3 Caption:空白 Label2よりも少し小さめにつくり、Label2の上に重ねる。 ラベル4(進行状況を%で表示させるラベル) オブジェクト名:Label4 Caption:0% コマンドボタンを押して動作させてみて下さい。 ユーザーフォームが貴方様の思い通りの動作をしていると思います。 ご不明な点・不具合等がございましたらご遠慮なくお知らせ下さい。

hawk-k
質問者

お礼

ありがとうございます。動作結果を見て感動いたしました。参考にさせていただきます。

  • bugmaru
  • ベストアンサー率38% (76/195)
回答No.1

Excelのマクロからモードレスなウィンドウを制御するのは大変なので、 左下のステータスバーにメッセージを表示する方法があります。 Application.DisplayStatusBar = True 'ステータスバーの表示 Application.StatusBar = "処理中です..." 'ステータスバーに文字列表示 : : 処理 : Application.StatusBar = False 'ステータスバーの制御を通常に戻す こんな感じです。 処理終了後、ステータスバーの文字列を処理前に戻したい時は、ステータスバー に文字列せ設定する前に変数に保存しておいて、ステータスバーの制御を通常に 戻した後、保存しておいた文字列を設定すれば処理前の状態に復帰できます。

hawk-k
質問者

お礼

早速の回答ありがとうございます。参考にさせていただきます。

関連するQ&A