
エクセル2003VBAで、マクロ実行時にユーザーフォームを
モードレス表示して、そのユーザーフォームにラベル「マクロ実行中です・・・」を貼り付けています。
しかし、処理が追いついていないのか、そのラベルが表示されません。
ユーザーフォームにはコードを記述していません。コードは以下のみです。
UserForm1.Show vbModeless
テキストをTrueにしてからマクロ処理のようなコードがあるのでしょうか?
お手数をおかけしますが、解決方法をご存知の方よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんにちは。
>モードレス表示して、そのユーザーフォームにラベル「マクロ実行中です・・・」を貼り付けています。
ラベルをどう処理しているのか、まったく書いていないわけで、さっはり意味が分かりません。
UserForm が立ち上がっている状態では、「マクロ実行中」とは言えるかもしれませんが、表示する意味はないはずです。
Private Sub UserForm_Initialize()
Label1.Caption = "マクロ実行中です....."
End Sub
必要ないと思います。
たとえば、ループした場合は以下のようにします。
Private Sub CommandButton1_Click()
Dim i As Long
Label1.Caption = "マクロ実行中です....."
DoEvents 'これを入れないと表示しない。
Do: i = i + 1: Loop Until i > 10 ^ 7
Label1.Caption = "終了"
End Sub
3~4秒で終了するはずですが、一旦、何かVBAをあらかじめ動かして、オブジェクトが活性化しないと、それ以上に時間が掛かる可能性があります。
なお、この仕様は、Office VBA独特のようです。
マクロを高速処理させるため、エクセルを非表示にしています。
それで、ユーザーフォームを表示させて、
マクロを実行中なのか第3者が見てわかるようにしようとしていたので必要なのです。
以下のコードで出来ました。ありがとうございます。
やはりおっしゃるとおり、「DoEvents」を入れないと、
「マクロ実行中です.....」の表示がされませんでした。
ついでにユーザーフォームに、プログレスバーをつくりました。
以下のコードです。
ユーザーフォーム2に、フォーム1を貼り、その内側にラベル1を貼り青色表示させてます。
フォーム1とラベル1のプロパティcaptionは空にしています。
'プログレスバーの設定---------------------------
Dim BarWidth As Single
UserForm2.Show vbModeless
With UserForm2
.Caption = "処理状況"
.Label1.Caption = "マクロ実行中です....."
'バー用ラベルの初期設定
With .Label2
.Top = 1 'フレームより1ピクセルずつ内側
.Left = 1
.Width = 0
.BackColor = &H800000 'バー色を青
End With
BarWidth = .Frame1.Width - 6
End With
For i = 1 To intTurn
'マクロ実行中の表示--------------------------------
DoEvents
UserForm2.Label2.Width = BarWidth * i / intTurn
//処理//
Next i
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
ラベルを表示したり非表示にしたりしたい
Visual Basic(VBA)
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
6
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
7
VBA:ユーザフォームのラベルの指定の仕方教えてください。
Visual Basic(VBA)
-
8
TextBoxに文字を書いても表示されない
Visual Basic(VBA)
-
9
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
10
userFormに貼り付けたLabelを変数に
Visual Basic(VBA)
-
11
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
12
UserForm1.Showでエラーになります。
工学
-
13
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
14
VBA ユーザーフォームラベルキャプション名変換
Visual Basic(VBA)
-
15
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
16
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
17
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
18
DoEvents関数って何?
Visual Basic(VBA)
-
19
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
20
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
他のシートからコピーする下記...
-
5
ワードのマクロについて教えて...
-
6
特定のPCだけ動作しないVBAマク...
-
7
Excel・Word リサーチ機能を無...
-
8
一つのTeratermのマクロで複数...
-
9
エクセルで特定の列が0表示の場...
-
10
メッセージボックスのOKボタ...
-
11
エクセルに張り付けた写真のフ...
-
12
ExcelVBAでPDFを閉じるソース
-
13
VBAのIF分で時間指定の条件式の...
-
14
TERA TERMを隠す方法
-
15
ExcelのVBA。public変数の値が...
-
16
Excel マクロ VBA プロシー...
-
17
Excel VBA セルの値をファイル...
-
18
EXCELのVBAでRange("A1:C4")を...
-
19
組んだマクロをメールで送る
-
20
#defineの定数を文字列として読...
おすすめ情報
公式facebook
公式twitter