|
▼森本家 さん:
この種の変換が操作者にとって便利かどうか疑問なところもありますが。
>それから「時 = 入力値 \ 100」の中にある「\」はどのような
>関数なのでしょうか。
関数ではなく演算子です。VBAへるぷを参照いただきたいのですが
割り算のあまりを取得します。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim 入力値 As Long
Dim 時 As Long
Dim 分 As Long
Dim 秒 As Long
Dim 時間未満の分
'時刻の入力領域を指定する
If Intersect(Target, Range("B3:C14")) Is Nothing Then Exit Sub
'複数のセルが変更された場合は終了
If Target.Count > 1 Then Exit Sub
'入力した値を「入力値」という変数に代入
入力値 = Val(Target.Value)
'1未満の数値を入れた場合または6桁でない場合は終了
If 入力値 < 1 Or Len(CStr(入力値)) <> 6 Then Exit Sub
'入力値を「時」「分」に分割
時 = 入力値 \ 10000
時間未満の分 = 入力値 Mod 10000
分 = 時間未満の分 \ 100
秒 = 時間未満の分 Mod 100
'「分」「秒」が60以上なら終了
If 分 >= 60 Or 秒 >= 60 Then Exit Sub
'セルを書き換えてもイベントを発生させない
Application.EnableEvents = False
'「時:分」形式に変換
Target.Value = TimeSerial(時, 分, 秒)
'セルを書き換えたときにイベントを発生させる
Application.EnableEvents = True
End Sub
|
|