- PR -

Format関数について

1
投稿者投稿内容
まぐみ
会議室デビュー日: 2002/07/10
投稿数: 8
投稿日時: 2002-07-29 16:17
VB.NETでWindowsアプリケーションを作成しています。

フォームのテキストボックスに入力されたデータを、
Format関数を使って日付型(2002/07/29のような)
に変換したいのです。

VB6のように、

Format(TxtYmd.Text, "yyyy/MM/dd")

と書いたのですが正しく返ってきませんでした。

初歩的なことですが、どのように書けばいいのかわからず
困っています。誰かご存知ないでしょうか?
WEIWEI
常連さん
会議室デビュー日: 2002/07/16
投稿数: 26
投稿日時: 2002-07-29 16:45
>VB6のように、
>Format(TxtYmd.Text, "yyyy/MM/dd")
>と書いたのですが正しく返ってきませんでした。

フォーマット関数の中の文字列をDate型にしてみてください。
Label1.Text=Format(CType(TextBox1.Text,Date),"yyyy/MM/dd")
といった具合です。
まぐみ
会議室デビュー日: 2002/07/10
投稿数: 8
投稿日時: 2002-07-29 16:55
WEIWEIさん、ありがとうございます。

私の説明不足で申し訳ないのですが、
テキストボックスには「/」抜きの(20020729のような)
入力も可能なんです。

その「/」抜きの場合には、
CType(TextBox1.Text,Date) が使えないようで・・・。

何か方法はないものでしょうか。再びよろしくお願いします。
WEIWEI
常連さん
会議室デビュー日: 2002/07/16
投稿数: 26
投稿日時: 2002-07-29 17:23
>テキストボックスには「/」抜きの(20020729のような)
>入力も可能なんです。

>その「/」抜きの場合には、
>CType(TextBox1.Text,Date) が使えないようで・・・。

これって、VB6でもそのままではエラーが出たと思いますよ。

こんなコードでどうでしょうか?
Dim n As Integer
Dim MyDate As Date
Dim MyYear, MyMonth, MyDay As Integer
n = InStr(TextBox1.Text, "/")
If n = 0 Then
MyYear = CType(Microsoft.VisualBasic.Left(TextBox1.Text, 4), Integer)
MyMonth = CType(Microsoft.VisualBasic.Mid(TextBox1.Text, 5, 2), Integer)
MyDay = CType(Microsoft.VisualBasic.Right(TextBox1.Text, 2), Integer)
MyDate = DateSerial(MyYear, MyMonth, MyDay)
Else
MyDate = CType(TextBox1.Text, Date)
End If
Label1.Text = Format(MyDate, "yyyy/MM/dd")

あと、InStr関数の結果で、文字を分割して場合分けすると、他の入力形式にも対応すると思います。
まぐみ
会議室デビュー日: 2002/07/10
投稿数: 8
投稿日時: 2002-07-29 17:49
ありがとうございました!

欲しかった答えを得ることができました。
助けていただいて本当にありがとうございます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-07-30 17:05
引用:

まぐみさんの書き込み (2002-07-29 16:17) より:
VB.NETでWindowsアプリケーションを作成しています。

フォームのテキストボックスに入力されたデータを、
Format関数を使って日付型(2002/07/29のような)
に変換したいのです。

VB6のように、

Format(TxtYmd.Text, "yyyy/MM/dd")

と書いたのですが正しく返ってきませんでした。

初歩的なことですが、どのように書けばいいのかわからず
困っています。誰かご存知ないでしょうか?




VB.NETで新しく作っているのでしたら、ユーザーにテキストボックスに書かせるのではなく、DateTimePickerを利用されてはいかがですか。クリックするとカレンダーが表示され、存在しない日付は入力不可能になります。プロパティーValueではDateTime型が取れるので、String型への変換も容易です。昔のように、「最初にカレンダー以外の場所をクリックしたら落ちる」とか、「コントロールの上でIMEをONして、でたらめにキーを押したら落ちる」とかいった不具合も修正されています。
まぐみ
会議室デビュー日: 2002/07/10
投稿数: 8
投稿日時: 2002-07-30 17:48
そんな便利な機能があるなんて知りませんでした。
是非一度ためしてみたいと思います。

皆さん知恵をお貸しいただいてありがとうございました。
MID
会議室デビュー日: 2002/08/05
投稿数: 9
投稿日時: 2002-08-07 16:39
外してたらごめんなさい。

VB6と同じと云うことであれば
format(TEXTBOX.TEXT,"0000/00/00")
では?
1

スキルアップ/キャリアアップ(JOB@IT)