
お世話になります。
現在VB2008にてフォームの開発をしているのですが、
DataGridViewのCellに手入力で数値の値を入力し、
その数値を時刻のHH:mmの書式に変換する仕様を
作成したいのですが、その関数が解らないんです。
具体的な目的としては、
例として
854 → 8:54
2005 → 20:05
と表示されるようにしたいのです。
一応、Format関数や、CDateなどを試してはみたのですが、
目的どおりの動作は行われませんでした。
どなたか、上記の動作を実現する関数などを
ご存知の方いらっしゃましたらご教授いただけないでしょうか。
お手数ですが、よろしくお願いします。
No.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
-------------------------------------------------------------------
ありがとうございます。
目的どおり動作が行えるようになりました。
Format以外の関数など考えていましたが、
上記のように、文字列を分断して:を加えるなどの
やり方もあったんですね。
後で、調べてみてさらに理解を深めようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6.0の「vbFromUnicode」はVB....
-
VB6.0 String型→Long型変換方法...
-
16進をASCIIコードに変換する...
-
C#で文字列を数値に変換する方法
-
WORD型をCString型に変換する方法
-
C#でテキストボックスに入力し...
-
16進コード文字列を文字列に変換
-
C言語のGPS問題が分かりません。
-
RGBとHSLを相互変換する際の端...
-
【C++/CLI】int型からString型...
-
クリスタルレポートで文字列の...
-
2つ目のレコードの値を取得す...
-
ファイル名の一部削除について
-
VBA 変数名に変数を使用したい。
-
『列名 '担当者CD' があいま...
-
VB2010で、選択した系列を最前...
-
AccessからExcelへエクスポート...
-
EXCELのVBAでLenB関数について
-
SQLを発行とは?クエリの作成と...
-
COBOLのINVALID KEYが理解でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6.0の「vbFromUnicode」はVB....
-
WORD型をCString型に変換する方法
-
VB.NETで1→A、2→B、26→Z、27→AA...
-
16進をASCIIコードに変換する...
-
VB6.0 String型→Long型変換方法...
-
C#で文字列を数値に変換する方法
-
バイナリデータの文字列変換(5...
-
vb6の桁数指定
-
VC++ std::stringからLPCWSTRに...
-
C#でListとDictionaryの判別方法
-
C++/CLI System::String::Fotma...
-
エクセルでメールヘッダーを解...
-
バイト型のデータをLong型に変換
-
16進コード文字列を文字列に変換
-
対数変換のついて
-
ASPでVBのFormat関数のような機...
-
Pythonの指数表記について
-
VB.NET ゼロ埋め
-
C++ 文字列変数と16進数の比較
-
2の補数の計算について
おすすめ情報