OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

日付型のデータに変換するには!?

  • 困ってます
  • 質問No.156711
  • 閲覧数264
  • ありがとう数7
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 89% (41/46)

初めて、利用します!!
テキストボックスに日付型のデータを入れたら、
指定した日付型のフォーマットに変換する関数を作ってます。
例えば、[20010101]と入力したら[2001/01/01]に変換!
それで、入力桁数によって・・・年月日をそれぞれ算出しようとしてました。
例えば、2桁入力時は[1桁目]を「月」[2桁目]を「日」という具合に!
そうしていくうち、5桁入力時に、年と月と日の判断をどうやったら良いのか
わからなくなってしまいました。
今、考えられるケースとしては [YYYYM][YYMMD][YYMDD]なのですが
判断の方法を教えてください。_(_^_)_
※Y:年 M:月 D:日
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル12

ベストアンサー率 65% (276/422)

>今、考えられるケースとしては [YYYYM][YYMMD][YYMDD]なのですが
そうですね。定まりませんね。
11111
と入力されたとき、
1年11月11日
11年11月1日
11年1月11日
111年1月1日
これは判断がつきません。
入力の書式が決まらないことには、プログラムで勝手に判断をつけるわけには行きません。

なので制限をつけるとか、MsgBoxを出して注意を促したり、Popupのフォームを出し、候補をリスト一覧に出し、ユーザー側に選択させるとかが必要になると思います。


なんにしても、この仕様では無理だと思います。(^^;)
お礼コメント
hyu_ya

お礼率 89% (41/46)

ありがとうございます。<m(__)m>
やはりそうですよねぇ・・・
各年月日の間に[/]が入っていれば以下の要領で大丈夫なのですが・・・

If IsDate(変数) Then
変数 = Format(変数, "yyyy/mm/dd")
End If
投稿日時 - 2001-10-24 16:42:26
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.2
レベル11

ベストアンサー率 30% (72/239)

やるんであれば年月日それぞれにテキストボックスを設け、 年:4桁又は2桁固定。 月:2桁以内で1以上12以下。 日:2桁以内で1以上31以下。(月の値によって最大値変動) それ以外であればメッセージボックスで注意を促す こんな感じでしょうか? ...続きを読む
やるんであれば年月日それぞれにテキストボックスを設け、

年:4桁又は2桁固定。
月:2桁以内で1以上12以下。
日:2桁以内で1以上31以下。(月の値によって最大値変動)

それ以外であればメッセージボックスで注意を促す
こんな感じでしょうか?
お礼コメント
hyu_ya

お礼率 89% (41/46)

ありがとうございます。<(_ _)>
やはり固定にした方が良いですよね!!
ちなみに2桁~4桁までと7桁~8桁までは
何とか対応できた?と思ったのですがね・・・
投稿日時 - 2001-10-24 16:45:59


  • 回答No.3
レベル14

ベストアンサー率 51% (1179/2272)

こんにちは。maruru01です。 No.1の方の言う通り、桁数を自由にして自動的に判断というのは、限界があります。 したがって、年、月、日を別のテキストボックス(またはコンボボックス)で入力するか、8桁連続入力にして、文字数判定をする(+日付として無効かどうかの判定も)などにした方がよいと思います。 日付の入力程度のことに自由度を持たせても、プログラムが煩雑になるのでやめた方がいいと思います。 ...続きを読む
こんにちは。maruru01です。
No.1の方の言う通り、桁数を自由にして自動的に判断というのは、限界があります。
したがって、年、月、日を別のテキストボックス(またはコンボボックス)で入力するか、8桁連続入力にして、文字数判定をする(+日付として無効かどうかの判定も)などにした方がよいと思います。
日付の入力程度のことに自由度を持たせても、プログラムが煩雑になるのでやめた方がいいと思います。
では。
お礼コメント
hyu_ya

お礼率 89% (41/46)

ありがとうございました。_(._.)_
やはり桁数は固定で10桁、もしくは8桁固定が作る方としても楽です!
とにもかくにも、(ソフトとか別のOCXを使わずに)テキストボックスで
フォーマットが上手くできればいいのですがねぇ!
投稿日時 - 2001-10-24 16:50:07
  • 回答No.4
レベル12

ベストアンサー率 65% (276/422)

再度、田吾作7です。 >各年月日の間に[/]が入っていれば以下の要領で大丈夫なのですが・・・ そうですね[/]が入っていたら、日付の区切りが定まりますね。 しかし、[/]が存在しない要領では、法則がありません。 2つ以上のパターンが存在するならば、プログラムで勝手な判断をするわけにはいきません。 ユーザーの意思と反する結果を生む恐れがあるからです。 ユーザーの意思を反映させるため ...続きを読む
再度、田吾作7です。
>各年月日の間に[/]が入っていれば以下の要領で大丈夫なのですが・・・
そうですね[/]が入っていたら、日付の区切りが定まりますね。

しかし、[/]が存在しない要領では、法則がありません。
2つ以上のパターンが存在するならば、プログラムで勝手な判断をするわけにはいきません。
ユーザーの意思と反する結果を生む恐れがあるからです。

ユーザーの意思を反映させるためには
(1)ありえない法則はエラー
(2)ユーザーに問い合わす
という処理を行うべきだと思います。
  • 回答No.5
レベル11

ベストアンサー率 30% (72/239)

(1)日付の入力桁は固定とし指定桁数以外の入力桁ははじく。 (2)IsDate関数を使用し日付値としての整合性チェックを行う。 (3)整合性が確認できれば任意のフォーマットに変換し出力。 でどう?
(1)日付の入力桁は固定とし指定桁数以外の入力桁ははじく。
(2)IsDate関数を使用し日付値としての整合性チェックを行う。
(3)整合性が確認できれば任意のフォーマットに変換し出力。
でどう?
  • 回答No.6
レベル8

ベストアンサー率 33% (18/53)

やっぱり、#2さんのように、年月日別々でコンボボックス等を設けて、選ばせるのが普通だと思います。  #1さんと同じで、この仕様では無理だと思います。 なにせ Excelの場合でも入れ方によって、勝手に間違った日付で処理するぐらいですから。(^_^)" ...続きを読む
やっぱり、#2さんのように、年月日別々でコンボボックス等を設けて、選ばせるのが普通だと思います。
 #1さんと同じで、この仕様では無理だと思います。

なにせ Excelの場合でも入れ方によって、勝手に間違った日付で処理するぐらいですから。(^_^)"
お礼コメント
hyu_ya

お礼率 89% (41/46)

ありがとうございました。_(._.)_
やはり、桁数を固定にするか年月日を別々に・・・
した方が無難かもしれませんね!!
投稿日時 - 2001-10-24 17:08:34
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ