こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBでの日付入力値のフォーマットに関して

教えて下さい。

環境:Visual Basic 2008

画面上にテキスト入力エリアを設け、日付を入力させたいと考えています。

その際に、あらかじめ"/"(スラッシュ)が表示されていて、そこへ数字のみを
入力し、例えば・・・20110101と入力された場合、2011/11/01と変換されて表示される
ような形にしたいと考えています。

そこで、以下のようなサンプルを入手し、実行していますが、どうもうまくFormatが
できません。

何が原因でしょうか???

Private Sub FRM_発注入力_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TXT_発注日.MaxLength = 10
End Sub
Function SetDateStyle(ByVal myStr As String) As String
Dim Temp As String
Temp = Replace(myStr, "/", "")
If Len(Temp) = 8 Then
SetDateStyle = Format$(Temp, "YY/MM/DD")
If IsDate(SetDateStyle) = False Then
Beep()
SetDateStyle = ""
End If
Else
SetDateStyle = myStr
End If

End Function

Private Sub TXT_発注日_TextChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TXT_発注日.TextChanged
TXT_発注日.Text = SetDateStyle(TXT_発注日.Text)

End Sub

TXT_発注日というテキスト入力エリアに入力され、変更があった場合に処理をするような
形となっています。

初歩的な質問で申し訳ありませんが、教えて下さい。

よろしくお願いします。

投稿日時 - 2011-11-02 13:34:08

QNo.7108645

すぐに回答ほしいです

質問者が選んだベストアンサー

>If Len(Temp) = 8 Then
>SetDateStyle = Format$(Temp, "YY/MM/DD")

Tempが8文字の時、日付形式に変換しているが
Tempはただの文字列なのでYYやMMは取得できないと思う。
SetDateStyle = Temp.Substring(0,2) & "/" & Temp.Substring(2,2) & "/" & Temp.Substring(4,2)
ならどうですか?(試してはいません)

投稿日時 - 2011-11-02 16:04:05

補足

ありがとうございました!

やりたい内容が実現しました。

投稿日時 - 2011-11-04 10:10:31

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

日付を操作者から受け取る方法(設計)は
(1)年号+年月日の4ボックス用意
(2)年号なし(西暦)でん3ん月日の3ボックス
(3)年月日コミの1ボックス
(4)カレンダーコントロールをよういする
(5)年月日で各々コンボを用意する
などあるだろう。
本件は(3)らしいが、西暦か和暦(年号つき)か悩ましい。
それにテキストBだと文字列で入れるときスラッシュなど省く
式にすると、1月(1桁月)などで0つきに入力させる必要が出て、紛らわしい。
今件では、20110912のような入れ方を予定しているようだ(違う?)。
どうせ、近くにラベル等を設けて、そこでテキストに入れる内容の案内(指示)が必要だろう。
西暦和暦と年月日の区切りと表現方法(順序)の別など。
>あらかじめ"/"(スラッシュ)が表示されていて
初期値として??/??/??のスラッシュを表示したいようだが
スラッシュを入れないで入力させるなら、スラッシュは消えてしまって、、意味無いのではないか。
スラッシュをまたいで年月日をそれぞれ入力するのは面倒では。
質問の表現を詳しく書いておいてほしい。
--
質問の入力内容がよく理解できてない(例示説明など不十分)が、下記は参考になるだろう。
下記はテキストボックスに201203のように入れて、ボタンを押すと日付を表示するプログラム。
和暦にする部分は、見覚えるほか無いだろう。
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim x, dts As String
Dim dt As DateTime
x = TextBox1.Text
dts = Microsoft.VisualBasic.Left(x, 4) & "/" & Mid(x, 5, 2) & "/" & Microsoft.VisualBasic.Right(x, 2)
MsgBox(dts)
dt = DateTime.Parse(dts)
MsgBox(dt.ToString("yyyy/MM/dd"))
'---
Dim cult As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("ja-JP")
cult.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar
MsgBox(dt.ToString("ggyy年MM月dd日", cult))
End Sub

投稿日時 - 2011-11-03 11:21:29

あなたにオススメの質問