初めて自分の家と他人の家が違う、と意識した時

どんな方法があるのでしょうか

A 回答 (3件)

代表的な手法としては、次のよう方法があります。

いずれもVBAについてある程度の知識と工夫が必要です。

1. ステータスバーを利用
  メッセージを表示することは簡単なのですが、難点としてエラーが発生した
  場合でもちゃんと表示を元に戻す例外処理を考慮しなければなりません。

2. フォームを利用
  フォームを使えるなら、プログレスバー(進捗表示グラフ)などグラフィカル
  な表示が可能です。ただし、少々難しいです。



要は、マクロ実行中であることをユーザーに伝えることができれば良いわけですから、次のような簡易的な方法が良いかもしれません。

1. 「マクロ実行中」を表現したメッセージシートを用意
  シートを追加して、シートの真中に大き目の文字で「マクロ実行中」と書きます
  何でもよいので、自分好みにデザインして下さい。
2. 1.のシート名を「Prog」に変更


マクロ実行中はこのシートをユーザーに見せておけば良いでしょう。当然、マクロが終了したら、このシートを非表示にしてしまいます。


Sub Sample()

  Dim SH As Worksheet

  'マクロ実行中のメッセージシート表示
  Set SH = ThisWorkbook.Sheets("Prog")
  With SH
    .Visible = True
    .Activate
    .Range("A1").Select
  End With

  'マクロの実行でシートが切り替わらないように
  '画面描写の更新を凍結
  Application.ScreenUpdating = False


  '実際の処理をここに書く



  'マクロ実行中のメッセージシートを非表示
  SH.Visible = False
  Set SH = Nothing
  '画面描写の更新を再開
  Application.ScreenUpdating = True
  '完了メッセージ
  MsgBox "終了しました。", vbInformation

End Sub
    • good
    • 1

自分の場合は、Cells.Select で、画面を全選択状態にしています。



Cells.Select すると、アクティブセルが最左上のセルになってしまうので、

元のセル=ActiveCell.Address
Cells.Select

処理

Range(元のセル).select

として、元に戻しています。
    • good
    • 0

ステータスバーにメッセージを表示させることが出来ます。



'プログラム実行時
Application.StatusBar = True
'実行中に、任意の場所でメッセージを出すす。
Application.StatusBar = "○○を実行中"
'終了時
Application.StatusBar = False


ほかに、ステータスバーを表示させたりする処理も必要かな。
Application.DisplayStatusBar = True

参考URL:http://www.officetanaka.net/excel/vba/tips/tips1 …
    • good
    • 1

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

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


おすすめ情報

このQ&Aを見た人がよく見るQ&A