3/2の入力を次年度の入力にする

イベントの活用例です。

セルに年を入れず、「月/日」形式で入力した場合、年を省略しているためその年の月日になる。例えば、今年が2000年の場合「2/3」とセルに入力すると「2000/2/3」になる。年度で入力したい場合は、1月から3月までは次の年になるように、イベントプロシージャを設定する。

Private Sub Worksheet_Change(ByVal Target As Range)
    If IsDate(Target.Value) Then
        Debug.Print "日付だ"
        Select Case Month(Target.Value)
            Case 1, 2, 3
                Excel.Application.EnableEvents = False '次行でWorksheet_Changeイベントが何度も発生しないようにする
                Target = VBA.DateSerial(Year(Target) + 1, Month(Target), Day(Target))
                Excel.Application.EnableEvents = True '解除
        End Select
    End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

は書きません。オブジェクトボックスをWorksheet。プロシージャ/イベントボックスでChangeを選ぶと勝手にモジュールに入る。動画またはこちらで確認下さい。

もう一つ。活用例。

「ぺけ」の形の文字は、いくつかある。これをイベントプロシージャを使って黄色の塗りつぶしのセルで「ぺけ」に似た文字の場合は、半角の小文字のx(エックス)に変える。

x,X,x,X,× 。順に、半角の小文字、半角の大文字、全角の小文字、全角の大文字、乗算記号。

Private Sub Worksheet_Change(ByVal Target As Range)
    If 1 = Len(Target) And Target.Interior.Color = VBA.vbYellow Then '1文字で黄色の塗りつぶしの場合
        Select Case Target
            Case "x", "X", "x", "X", "×"
                Excel.Application.EnableEvents = False
                Target = "X" '半角大文字X
                Excel.Application.EnableEvents = True
            End Select
    End If
End Sub

(Visited 75 times, 1 visits today)
カテゴリー: 14 イベントの使い方 <VBA> パーマリンク

コメントを残す

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