ステータスバーにメッセージを表示する
●詳細● 

 サンプルでは、マクロの実行状況をステータスバーに表示しています。 
サンプル内容は、マクロのあるブックをアクティブにしてセルをコピー
したら、新規に追加したブックをアクティブにして貼り付ける、を繰り
返します。そして、画面の表示を動かした場合と、画面の表示を固定した
場合で、ステータスバーのメッセージを変えています。 

 画面の表示を動かした場合は、2つのブックが交互に表示されるので、
画面がめまぐるしく動きます。そして、ステータスバーには、画面の状態
が固定されていないことと処理状況が表示されます。 画面の表示を停止さ
せた場合は、新規ブックのシート2が表示されたままで動きません。そして、
やはりステータスバーには、画面が固定されていることと処理状況が表示さ
れます。 画面の動きと、処理結果が分かりやすいように、マクロのあるブック
のシートに一時的に色を付けているので、画面の表示が動く時と停止している時
で、貼り付け結果の色が違います。 

●準備● 
   新規ブックにサンプルマクロを貼り付けてください。 

●サンプル● 

Sub sample() 

    Dim myWB As Workbook 
    Dim newWB As Workbook 
    Dim myState(2) As String 
    Dim myBar As Boolean 
    Dim i, j As Integer 

    '<画面の動きを配列にセットします。> 
    '<画面が動きます。> 
    myState(1) = "True" 

    '<画面の動きを止めます。> 
    myState(2) = "False" 

    '<マクロのあるブックを取得します。> 
    Set myWB = ThisWorkbook 

    '<新規ブックを取得します。> 
    Set newWB = Workbooks.Add '←(1) 

    '<ステータスバーの状態を保存します。> 
    myBar = Application.DisplayStatusBar '←(2) 

    '<ステータスバーを表示します。> 
    Application.DisplayStatusBar = True 

    MsgBox "画面とステータスバーを見ていてくださいね。" 

    '<画面の動きがある場合と停止させた場合の確認をし、 
    '画面の状態をステータスバーに表示します。> 
    For i = 1 To 2 '←(3) 

      '<動きが分かりやすいようにシートに色を付けます。> 
      myWB.Activate 
      Worksheets(1).Activate 

      '<全てのセルを選択します。> 
      Cells.Select 

      '<内部を塗りつぶす色を指定します。> 
      Selection.Interior.ColorIndex = 34 + i '←(4) 

      newWB.Activate 
      Worksheets(i).Activate 

      '<画面の動きを止めるかどうかセットします。> 
      Application.ScreenUpdating = myState(i) '←(5) 

      '<マクロのあるシートのA1〜A10のセル内容をコピーして 
      '新規ブックの1枚目のシートのB1〜B10へ貼り付けます。> 
      For j = 1 To 10 

          '<ステータスバーにメッセージを表示します。> 
        If i = 1 Then '←(6) 
          Application.StatusBar = "画面は動いています。・・・" _ 
           & j & "行目コピー中(新規ブックのシート1へ)" 
        Else 
          Application.StatusBar = "画面の動きを止めました。・・・" _ 
          & j & "行目コピー中(新規ブックのシート2へ)" 
        End If 

        '<マクロのあるシートをコピーします。> 
        myWB.Activate 
        Worksheets(1).Activate 
        Range("A" & j).Select 
        Selection.Copy 

        '<1秒間マクロを中止します。> 
        Application.Wait (Now + TimeValue("00:00:01")) '←(7) 

        '<新規シートへ貼り付けます。> 
        newWB.Activate 
        Worksheets(i).Activate 
        Range("B" & j).Select 
        ActiveSheet.Paste 

        '<1秒間マクロを中止します。> 
        Application.Wait (Now + TimeValue("00:00:01")) 

      Next j 

    Next i 

    '<マクロのあるブックのシートの色を元に戻します。> 
    myWB.Activate 
    Worksheets(1).Activate 
    Cells.Select 
    Selection.Interior.ColorIndex = xlNone 
    Range("A1").Select 


    '<新規ブックのシート1をアクティブにします。> 
    newWB.Activate 
    Worksheets(1).Activate 

    '<ステータスバーの表示内容をExcelの規定値に戻す。> 
    Application.StatusBar = False '←(8) 

    '<ツールバーを元に戻します。> 
    Application.DisplayStatusBar = myBar 

    '<画面の動きを解除します。> 
    Application.ScreenUpdating = True 

    MsgBox "新規ブックのシート1とシート2を確認してください。" 

End Sub 


●補足説明● 

(1) Addメソッドは、新しいブックを作成します。そして、新しいブックが作業中
のブックになります。 

(2)DisplayStatusBarプロパティは、ステータスバーの値の取得と設定ができます。
Trueでステータスバーを表示します。 

(3)「For〜Next」ステートメントは、指定された回数分、処理を繰り返します。 
<構文> For x = i To y 
(処理) 
Next x 

x:繰り返す回数をカウントする数値変数を指定します。 

i:初期値をセットします。 

y:繰り返す回数(最終値)をセットします。 

Nextステートメントでxに1加算され、再び処理を繰り返します。 

(4)ColorIndexプロパティは、セル内部の塗りつぶしなどに適用する色を設定します。 
色は、現在のカラーパレットのインデックス、または定数で表します。
現在のカラーパレットを返すには、Colorsプロパティを使ってください。 

(5)ScreenUpdatingプロパティは、マクロの実行中に画面表示を更新する(True)・
更新しない(False)を設定します。ブール型 (Boolean) の値を使用します。 
画面を更新しないと、マクロの処理過程は見ることができませんが、マクロの実行
速度が向上します。 
  マクロが終了したら、ScreenUpdatingプロパティの値をTrueに戻します。 

 *ブール型 (Boolean) 
ブール型 (Boolean) の変数は、16 ビット(2バイト) の変数です。
ブール型変数が格納できる値は、真(True)または偽(False)だけです。 

(6)StatusBarプロパティに、任意の文字列を代入してメッセージを表示します。 

(7)実行中のマクロを指定の時刻まで停止します。指定の時間に達した場合、Trueを
返します。 
Wait メソッドは、Excel のすべての動作を停止させますが、印刷や再計算などの
バックグラウンド処理は続行されます。 

 *Now関数・・・コンピュータのシステムの日付と時刻の設定に基づいて、現在の
日付と時刻を表すバリアント型 (内部処理形式 Date の Variant)の値を返します。 

 *TimeValue関数・・・時刻を表すバリアント型 (内部処理形式 Date の Variant)の
値を返します。 

 <構文> TimeValue(time) 

  引数 time は必ず指定します。引数 time には、通常 0:00:00 (12:00:00 
  AM)〜23:59:59 (11:59:59 PM) の範囲の時刻を表す文字列式を指定します。 

(8)Excel側でステータス バーを制御しているとき、このプロパティは False を返します。
ステータスバーの文字列を既定値に戻すには、プロパティに Falseを設定します。




戻る


Excel Word Access VBA! モーグ