VBAのメモ:Constで配列を置いてステータスバーに表示

同じメソッド内でも動作状況を出力させたい時ありますよね
そんなときにどこでも使える配列を順番に呼び出して出力すればいいって思うのですが
グローバル変数はあんまり置きたくないなって思う方にオススメのやり方です

Option Explicit

'環境office365で確認
'Constで配列を宣言するとエラーになる、調べた所宣言できないので↓の形のステータス情報を表示させる
Const Arr_status As String = "1/5 : 起動ボタン," & _
                             "2/5 : 動作確認中," & _
                             "3/5 : 実行中," & _
                             "4/5 : 記録中," & _
                             "5/5 : 完了"
Sub Main()
    ViewStatus (Array()) '何もない配列を渡して初期化する
    ViewStatus (Split(Arr_status, ",")) 'Splitでカンマの位置で配列に変換する
    ViewStatus (Split(Arr_status, ",")) '必要回数+1回呼び出してあげる
    ViewStatus (Split(Arr_status, ","))
    ViewStatus (Split(Arr_status, ","))
    ViewStatus (Split(Arr_status, ","))
    ViewStatus (Split(Arr_status, ",")) '最後に非表示になる
End Sub

'Application.StatusBar = 表示させたい文字
'Application.StatusBar = Falseで非表示
Sub ViewStatus(arr As Variant)
    If UBound(arr) = -1 Then'配列なしの場合
        Application.StatusBar = False
        Exit Sub
    End If
    Dim i As Long
    Dim strNow As String: strNow = Application.StatusBar
    For i = LBound(arr) To UBound(arr)
        If Application.StatusBar = False Then
            Application.StatusBar = arr(i)
        ElseIf i = UBound(arr) Then
            Application.StatusBar = False
        ElseIf Application.StatusBar = arr(i) Then
            Application.StatusBar = arr(i + 1)
        End If
        If strNow <> Application.StatusBar Then
            Exit Sub
        End If
    Next i
End Sub

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です