アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

下のようにすればユーザーフォームを表示できないでしょうか。


ご参考に。(当方、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
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/11/16 18:39

初めまして。

私の持っている参考書に貴方様の思い通りの操作をするサンプルマクロが記載されていました。そのマクロをお知らせいたします。


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%

コマンドボタンを押して動作させてみて下さい。
ユーザーフォームが貴方様の思い通りの動作をしていると思います。

ご不明な点・不具合等がございましたらご遠慮なくお知らせ下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/11/16 18:43

Excelのマクロからモードレスなウィンドウを制御するのは大変なので、


左下のステータスバーにメッセージを表示する方法があります。

Application.DisplayStatusBar = True 'ステータスバーの表示
Application.StatusBar = "処理中です..." 'ステータスバーに文字列表示
:
: 処理
:
Application.StatusBar = False 'ステータスバーの制御を通常に戻す
こんな感じです。

処理終了後、ステータスバーの文字列を処理前に戻したい時は、ステータスバー
に文字列せ設定する前に変数に保存しておいて、ステータスバーの制御を通常に
戻した後、保存しておいた文字列を設定すれば処理前の状態に復帰できます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/11/16 18:35

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

このQ&Aを見た人はこんなQ&Aも見ています