プロが教えるわが家の防犯対策術!

お世話になります。
現在VB2008にてフォームの開発をしているのですが、
DataGridViewのCellに手入力で数値の値を入力し、
その数値を時刻のHH:mmの書式に変換する仕様を
作成したいのですが、その関数が解らないんです。

具体的な目的としては、
例として
854 → 8:54
2005 → 20:05
と表示されるようにしたいのです。

一応、Format関数や、CDateなどを試してはみたのですが、
目的どおりの動作は行われませんでした。

どなたか、上記の動作を実現する関数などを
ご存知の方いらっしゃましたらご教授いただけないでしょうか。
お手数ですが、よろしくお願いします。

A 回答 (1件)

どんな情報も強制的に変換するという方法であれば可能です。



・絶対に4桁より大きい桁数は入力されない。
・1桁でも入力があれば前ゼロを付加して強制的に変換する。

という方法です。

-------------------------------------------------------------------
Dim strTarget As String
Dim strRet As String

strTarget = "****"
strTarget = strTarget.PadLeft(4, "0"c)
strRet = strTarget.Substring(0, 2) + ":" + strTarget.Substring(2, 2)
-------------------------------------------------------------------

「9999」と入力された場合
strTarget = "****" の「****」に「9999」を代入します。
strRetには「99:99」と格納されます。

「9」と入力された場合
strTarget = "****" の「****」に「9」を代入します。
strRetには「00:09」と格納されます。

時間として判定したいと言うのであれば

-------------------------------------------------------------------
Dim strTarget As String
Dim strRet As String

strTarget = "****"
strTarget = strTarget.PadLeft(4, "0"c)

'前2桁が0以上24未満か判定
If (CType(strTarget.Substring(0, 2), Integer) < 0 AndAlso CType(strTarget.Substring(0, 2), Integer) > 24) Then
'成立しない為、処理を抜ける
Exit Sub
End If

'後2桁が0以上59未満か判定
If (CType(strTarget.Substring(2, 2), Integer) < 0 AndAlso CType(strTarget.Substring(2, 2), Integer) > 59) Then
'成立しない為、処理を抜ける
Exit Sub
End If

strRet = strTarget.Substring(0, 2) + ":" + strTarget.Substring(2, 2)
-------------------------------------------------------------------

もっと簡単にやりたい場合は・・・・
-------------------------------------------------------------------
Dim strTarget As String
Dim strRet As String

strTarget = "****"
strTarget = strTarget.PadLeft(4, "0"c)
strRet = strTarget.Substring(0, 2) + ":" + strTarget.Substring(2, 2)

'日付として成立するか判定
If (IsDate("2009/1/1 " + strRet) = False) Then
strRet = String.Empty
'成立しない為、処理を抜ける
Exit Sub
End If
-------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

ありがとうございます。
目的どおり動作が行えるようになりました。

Format以外の関数など考えていましたが、
上記のように、文字列を分断して:を加えるなどの
やり方もあったんですね。
後で、調べてみてさらに理解を深めようと思います。

お礼日時:2009/07/23 18:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!