No.3ベストアンサー
- 回答日時:
>「処理中は"しばらくお待ちください!"と表示したシートをアクティブに」する方法を教えてください。
Sheet1とSheet2を用意して、Sheet2に
"しばらくお待ちください!"と入力する。
ワードアートを貼り付けると目立ってよいかも。
標準モジュールに以下のコードを貼り付け、
Sheet1をアクティブにして実行して下さい。
Sub Sample3()
Dim i As Integer
Dim x As Double
Dim s As String
Sheets("Sheet2").Activate
Application.ScreenUpdating = False
Sheets("Sheet1").Activate
For i = 1 To 10000
x = Int((i / 10000) * 100)
s = Application.WorksheetFunction.Rept("■", x / 10)
Application.StatusBar = x & "%進行" & s
Cells(i, 1).Value = i
Next
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
「長い処理」の挿入どころですが、この場合なら
For-Nextの間がそれに当たります。
1万回の繰り返しなので、
1回ループあたりの進行率を
x = Int((i / 10000) * 100)
で変数Xに代入
10個の■で100%とするため、
ワークシート関数REPTの2番目の引数の
繰り返し回数に10分の1にして与えています。
No.2
- 回答日時:
(1)について
一番簡単なのは、「しばらくおまちください!」を
ステータスバーに表示する方法だと思います。
Sub Macro()
Application.StatusBar = "しばらくお待ちください!"
Application.ScreenUpdating = False
長い処理
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
これ以外にも処理中は"しばらくお待ちください!"と
表示したシートをアクティブにしておいたり、
ユーザーフォームに表示したりすることも出来ますが、
ステータスバーに表示が、お手軽だと思います。
(2)について
こちらもステータスバーにプログレスバー風に
進行率を表示させるのはどうですか。
あと何分という表示はできませんが、
全体の何%進んだかを表示できます。
(1)の回答と組み合わせたサンプルです。
Sub Sample2()
Dim i As Integer
Dim x As Double
Dim s As String
Application.ScreenUpdating = False
For i = 1 To 10000
x = Int((i / 10000) * 100)
s = Application.WorksheetFunction.Rept("■", x / 10)
Application.StatusBar = "しばらくお待ちください!" & x & "%進行" & s
Cells(i, 1).Value = i
Next
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
この回答への補足
ご回答感謝します。
(1)について、試してみました。ありがとうございます。成功です!!
(2)について、進行率の表示はうれしいです。しかし、肝心のマクロ実行部分=「長い処理」の挿入どころをまちがえたのか、うまくいきませんでした。この点、お教えくださいますか?
また、できれば、「処理中は"しばらくお待ちください!"と表示したシートをアクティブに」する方法を教えてください。画面が固まっていると勘違いする方のためによりわかり易くしたいのです。よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/04 10:48
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2023/01/20 14:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「Cancel = True」とはどういう...
-
VB2005 DataGridView上でクリッ...
-
別フォームから戻ったときのイ...
-
【C#】ラベルのダブルクリック...
-
処理終了後のに砂時計が、クリ...
-
マイページはどこを開くの
-
デジタル時計の時刻合わせの方...
-
デスクトップ画面を4分割するには
-
ウインドウを毎回同じ位置、大...
-
Excelでワードアートや図を常に...
-
エクセルのシート上に別のシー...
-
ポップアップウィンドウがブロ...
-
Javascript_submit()完了後に処...
-
5ちゃんねる
-
エクセルVBAでフォームのListbo...
-
【Android】ユーザー補助機能ボ...
-
リストビューをスクロールさせ...
-
スライドショーを全画面でなく...
-
Excelで一部分だけを常に表示さ...
-
PDFを(htmlのように)無限に縦...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「Cancel = True」とはどういう...
-
別フォームから戻ったときのイ...
-
VB2005 DataGridView上でクリッ...
-
エクセル アプリケーションの...
-
処理終了後のに砂時計が、クリ...
-
VBAでIEの「Web ページからのメ...
-
VB6.0のEnabledをfalseにしても...
-
excelのタスクバーアイコンが・...
-
Sleep関数の最大時間について
-
Perlで数値(小数点、負の数、...
-
javascriptの中で、perlのコマ...
-
C# マウスオーバーの記述方法
-
C++での連続した左クリックの禁...
-
Perlの多重起動を禁止したい
-
[CGI]ブラウザを閉じた時の動作
-
VC++2010 エディットボックスに...
-
フォームの値を取得できません...
-
エクセルVBAのMultipageの使...
-
【C#】ラベルのダブルクリック...
-
別ページからのタブ切り替えの...
おすすめ情報