サンプルコード
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target.CountLarge = 1 Then
Exit Sub
End If
If Intersect(Target, Range("B2:B4")) Is Nothing Then
Exit Sub
End If
Dim s As String
s = Target.Value
If Not Len(s) = 0 Then
Dim re As Object
Set re = CreateObject("VBScript.RegExp")
With re
.Pattern = "^(0?[0-9]{1}|1[0-9]{1}|2[0-3]{1}){1}[0-5]{1}[0-9]{1}$" ' 検索パターンを設定
.IgnoreCase = False ' 大文字と小文字を区別する
.Global = True ' 文字列全体を検索
End With
If re.Test(s) Then
Dim str_tmp_1 As String
Dim str_tmp_2 As String
Dim str_tmp_3 As String
str_tmp_1 = Format(s, "0000")
str_tmp_2 = Left(str_tmp_1, 2)
str_tmp_3 = Right(str_tmp_1, 2)
Application.EnableEvents = False
Target.NumberFormatLocal = "@"
Target.Value = str_tmp_2 & ":" & str_tmp_3
Application.EnableEvents = True
End If
Set re = Nothing
End If
End Sub
今回の場合は、あるワークシートのRange(“B2:B4”)において、入力の内容が時間をあらわす数字だった場合に00:00の文字列に書き換える。
例:900 → 09:00
標準モジュールではなく、実行させるワークシートにコードを記入する。
コメント