私は同様の必要性を持っていました。ユーザーがテンキーパッドを使用して24時間入力した場合、コロンの入力は尻の痛みでした。
これは過酷ですが、私の状況ではうまくいきます。あなたがする必要があるすべては、あなたが24時間形式のいずれかを使用するセル形式です:
Public Sub Handle24HourTimeEntry(ByVal Target As Range)
'Converts up to 4 digits to 24 hour time
Dim sTime24 As String
Const sTIME_FORMATS As String = "|h:mm;@|h:mm|hh:mm|"
Const sERROR_VALUE As String = "XXXX"
'Valid 24hr time values: 1, 59, 135, 2035, 2359
'Invalid values: 2400, 90, 9999, 12345
If Target.Cells.Count = 1 Then ' ensure that only single cell edits get processed
If IsNumeric(Target.Cells.Value2) Then ' skips empty cells, labels and error conditions
If Not Target.Cells.HasFormula Then ' skip formulas
If InStr(1, sTIME_FORMATS, "|" & Target.Cells.NumberFormat & "|") > 0 Then
If Target.Value2 >= 1 Then ' it's not a standard time value
sTime24 = Format$(Target.Value2, "0000")
If Len(sTime24) = 4 Then
sTime24 = Left$(sTime24, 2) & ":" & Mid$(sTime24, 3, 2)
If IsDate(sTime24) Then
Target.Value2 = CDate(sTime24)
Else
Target.Value = sERROR_VALUE
End If
Else
Target.Value = sERROR_VALUE
End If
End If
End If
End If
End If
End If
End Sub
私は、ブックのシート変更イベントから呼び出す:右
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Handle24HourTimeEntry Target
End Sub
が、私がしなければなりません毎回手動でコロンを入れてください。私はコロンなしで1830を入力できるようにしたいと思い、コロンを自動的に追加するのに優れています。 (コンピュータのラボで、チェックインした時間を入力して30分に制限することができます) – Tom
@TomそれでExcelはあなたがそれをしたいと思っています。それは実際には1日の端数としてそれを格納するので、12:00は0.5として格納され、ちょうど時間として提示されます。あなたがExcelでロールして、あなたがしたいことをすれば、人生はもっと簡単になります。 –