今回はExcelVBAで強制的に時間形式に変更しテキストボックスに入力する方法を解説します。
簡単に自己紹介ですが私は会社員15年程経験しその中でExcelVBAを使い沢山の効率化を図ってきました。Excelの資格も取得していますので有益な情報になると思います。
今回の記事の対象者
- ExcelVBAでテキストボックスに時間形式00:00様式で入力させる方法を知りたい
今回の記事を見た事で得られる事
- ExcelVBAでテキストボックスに時間形式00:00様式で入力させる方法がわかる
では早速ですがコードから記載します。
Private Sub txt_taisyab_Change()
'#############退社Bを入力中に全角の:が入力されたら半角に変換する開始#######################
' 入力された文字列を取得する
Dim inputStr As String
inputStr = Me.txt_taisyab.Value
' 全角文字「:」を半角文字「:」に変換する
inputStr = Replace(inputStr, ":", ":")
' 変換後の文字列をテキストボックスに表示する
Me.txt_taisyab.Value = inputStr
'#############退社Bを入力中に全角の:が入力されたら半角に変換する終了#######################
'#############退社Bを入力中に全角数字が入力されたら半角に数字に変換する開始#######################
' 入力された文字列を取得する
Dim inputStr2 As String
inputStr2 = Me.txt_taisyab.Value
' 全角数字を半角数字に変換する
Dim outputStr2 As String
outputStr2 = ""
Dim i As Integer
For i = 1 To Len(inputStr2)
Select Case Mid(inputStr2, i, 1)
Case "0"
outputStr2 = outputStr2 & "0"
Case "1"
outputStr2 = outputStr2 & "1"
Case "2"
outputStr2 = outputStr2 & "2"
Case "3"
outputStr2 = outputStr2 & "3"
Case "4"
outputStr2 = outputStr2 & "4"
Case "5"
outputStr2 = outputStr2 & "5"
Case "6"
outputStr2 = outputStr2 & "6"
Case "7"
outputStr2 = outputStr2 & "7"
Case "8"
outputStr2 = outputStr2 & "8"
Case "9"
outputStr2 = outputStr2 & "9"
Case Else
outputStr2 = outputStr2 & Mid(inputStr2, i, 1)
End Select
Next i
' 変換後の文字列をテキストボックスに表示する
Me.txt_taisyab.Value = outputStr2
'#############退社Bを入力中に全角数字が入力されたら半角に数字に変換する終了#######################
End Sub
まず手順や考え方としては
- テキストボックス名txt_taisyabに値が入力される度に:が全角なら半角の:に変換する
- テキストボックス名txt_taisyabに値が入力される度に全角数字なら半角数字に変換する
という考え方で大丈夫かと思います。
入力される度にという事を実装したいのでChangeイベントを使用します。
「上記の考えでは文字列が入力される場合があるのでは?」
と思った方、正解です。
それに関しては別のイベントで実装する事にしました。
その解説は次回に記載したいと思いますので今回は割愛します。

