• ベストアンサー

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

お世話になります。 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

  • マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。

    エクセル2003VBAで、マクロ実行時にユーザーフォームを モードレス表示して、そのユーザーフォームにラベル「マクロ実行中です・・・」を貼り付けています。 しかし、処理が追いついていないのか、そのラベルが表示されません。 ユーザーフォームにはコードを記述していません。コードは以下のみです。 UserForm1.Show vbModeless テキストをTrueにしてからマクロ処理のようなコードがあるのでしょうか? お手数をおかけしますが、解決方法をご存知の方よろしくお願いいたします。

  • エクセルのマクロでUserForm1を作って下記のようなコードを実行す

    エクセルのマクロでUserForm1を作って下記のようなコードを実行すると UserForm1を一瞬だけ表示して消えるのかと思ったのですが、表示されたまま消えません。 Unload UserForm1のところを UserForm1.Hideにしても同じです。 表示されたUserForm1を閉じるにはどうしたらよいですか。 Sub test() UserForm1.Show Unload UserForm1 End Sub

  • 【Excel】マクロ実行前に確認メッセージを表示

    Excel2003を使用しています。 あるマクロを実行する際、実際に処理する前にワンクッション置きたいので、確認のメッセージを表示させたいと思っています。 このとき、OKを選択すれば、このマクロを実行し、キャンセルを選択したら、何も処理しないというふうにしたいのですが、どのようにコードを書いたらいいでしょうか? メッセージに対して、OKの選択だけなら書けるのですが、キャンセルもある場合の書き方がわかりません。よろしくお願いします。

  • VBAのエラーについて

    エクセル2007 でマクロのコードを書いています。 開発画面からマクロを実行するとうまくいくのに、エクセルのシートに配置したボタンにそのマクロを登録して実行するとエラーが出てしまいます。 標準モジュールに UserForm1.showを書いており、UserForm1上に配置したコマンドボタンによってUserForm2を表示させているのですが、UserForm2が出る前に、「問題が発生したために、Microsoft Office 2007 Excelを・・・・・・」というような画面が出て強制終了されます。(UserForm1、UserForm2とも modelessで表示しています。) また、開発画面から1度実行すれば、シートに配置しマクロを登録したボタンからでも実行できるようになるのですが、一度、そのブックを保存してから改めて開くと、同じような症状が出てしまいます。 UserForm2のInitializeに問題があるのだと思い、そこのコードをじっくりと見た結果、UserForm2にあるPageの中に配置した特定のComboBoxとCommandButtonに関する処理を非表示にするとエラーが出ないことが判明しました。しかし、それらについての処理は、他のComboBoxなどと同じ処理(セルの値を読み込むような)をしているもので、名前などのミスもありません。(というか、開発画面からの実行では正常に動きます。) ただ、共通していることとしては、そのエラーが出る特定のComboBoxとCommandButtonは、最後の最後で思いついて配置したものであるということだけなのです。  ずっと、いろいろな方向から試しているのですが、わかりません。複雑な説明で申し訳ないのですが、なにかしら情報をお願いします。

  • 実行エラー'424' ????

    エクセルでユーザーフォームを作成しました。 (オブジェクト名) UserForm7 です。 これを 開くマクロは Sub 受入フォームの表示() UserForm7.Show End Sub です。 すると 実行エラー'424' オブジェクトが必要です。と デバックします。 ちなみにUserForm1も作成してあり マクロは Sub 仕入先マスタ表示() Dim mytbl As Range Set mytbl = Worksheets("T_仕入先").Range("仕入先リスト1") UserForm1.Caption = "仕入先選択" UserForm1.Label1.Caption = "■仕入先一覧■" With UserForm1.ListBox1 .ColumnCount = mytbl.Columns.Count .ColumnWidths = "2cm;3cm" .List = mytbl.Value End With UserForm1.Show   End sub は問題なくフォームが表示します。 どこがわるいのでしょうか?

  • エクセルマクロユーザーフォームのtxtbox値を標準モジュールに保持

    宜しくお願いします。 ユーザーフォームのtxtbox値を標準モジュールに渡してマクロを実行 るのですが、一度値をセットしたら20~30回変更が無いので標準モジュール のみショートカットで実行したいのですが値を保持してくれません。 何か良い方法は無いのでしょうか。? 'フォーム起動 Sub フォーム() UserForm1.Show End Sub +++++++++++++++++++++++++++ Private Sub CommandButton1_Click() Call モジュール '標準モジュールを呼ぶ Unload UserForm1 ++++++++++++++++++++++++++ モジュール内 Static ufX As Byte ufX = UserForm1.XXX.Text 'ufXの値を保持したい。

  • Form1からForm2へ変数を送る

    VBの初心者です。 下のようにコードを記述してみました。 ・Form1のdNameをForm2へ送り、ラベルに表示。 ・変数dNameは標準モジュールで定義。 **Form1** dName = delname.Text Form2.Show **Form2** Label.Caption = dName **標準モジュール** Dim dName As String しかし、ラベルにdNameの値が表示されません。 なにか良い解決策を教えてください。 あと、標準モジュールについてわかりやすく教えて下さい。

  • マクロ実行中に警告やメッセージを表示しなくない。

    Excel2007を使用しています。 マクロ実行中に警告やメッセージを表示しなくないと思っております。 インターネットで調べましたところ、 マクロでは、 Application.DisplayAlerts = False と書けば良いと書かれておりまして、 実行したところメッセージが表示されなくなりました。 同じようなことをマクロを使用しなくても設定できると思い、 調べてみたのですが、うまく見つけれられませんでした。 どこで設定したら良いのでしょうか? もし宜しければ、教えて頂けませんか? 宜しくお願い致します。

  • Excel VBAにて2つの処理を同時実行可能?

    是非お力をお貸し下さい。 よろしくお願いします。 Windows XP Excel2003 (VB6.0) メイン処理が非常に時間がかかるため、フォームを表示させ 文字(Label)を点滅させて「動いている(ハングアップしていない)」ことを 使用者に伝えようとしています。 --- Form1内のコード(メイン) --- Sub Main() Form2.Show vbModeless [ ~メイン処理~ ] End Sub --- Form2内のコード --- Sub UserForm_Initialize() Call Blink End Sub --- 標準モジュール内のコード --- Sub Blink() If Form2.Label1.Visible = True Then Form2.Label1.Visible = False Else Form2.Label1.Visible = True End If Form2.Repaint DoEvents Application.OnTime Now + TimeValue("00:00:01"), "Blink" End Sub これを実行すると、メイン処理が終了した後にForm2内の文字が 点滅します。 実現したいのは「使用者が動いていることを(ハングアップしていない ことを)確認出来る」という点です。 どうぞ よろしくお願いします。

  • Powerpoint 2003 でのVBA UserFormの表示方法

    いつもPowerpoint用のマクロを一つのファイルにまとめ、ツールバーに実行用のボタンを追加して使用しています。マクロファイルは閉じたままにしています。 このたびUserFormをModalからModelessに修正し、マクロを実行しましたらFormが表示されませんでした。マクロファイルを開いたまま実行するときちんと表示されます。また、UserFormがModalの時はマクロファイルを閉じたままでもきちんと表示されていました。 マクロが保存されているファイルを閉じたままでもModelessでUserFormを表示する方法がありましたら教えてください。 ちなみに、現在はこのようなスクリプトになっています。 Load frmXXX frmXXX.Show vbModeless (frmXXX.Showだけの時はきちんと表示されていました) ご回答お待ちしております。

専門家に質問してみよう