アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (6件)

やっぱり、#2さんのように、年月日別々でコンボボックス等を設けて、選ばせるのが普通だと思います。


 #1さんと同じで、この仕様では無理だと思います。

なにせ Excelの場合でも入れ方によって、勝手に間違った日付で処理するぐらいですから。(^_^)"
    • good
    • 0
この回答へのお礼

ありがとうございました。_(._.)_
やはり、桁数を固定にするか年月日を別々に・・・
した方が無難かもしれませんね!!

お礼日時:2001/10/24 17:08

(1)日付の入力桁は固定とし指定桁数以外の入力桁ははじく。


(2)IsDate関数を使用し日付値としての整合性チェックを行う。
(3)整合性が確認できれば任意のフォーマットに変換し出力。
でどう?
    • good
    • 0

再度、田吾作7です。


>各年月日の間に[/]が入っていれば以下の要領で大丈夫なのですが・・・
そうですね[/]が入っていたら、日付の区切りが定まりますね。

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

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

こんにちは。

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

ありがとうございました。_(._.)_
やはり桁数は固定で10桁、もしくは8桁固定が作る方としても楽です!
とにもかくにも、(ソフトとか別のOCXを使わずに)テキストボックスで
フォーマットが上手くできればいいのですがねぇ!

お礼日時:2001/10/24 16:50

やるんであれば年月日それぞれにテキストボックスを設け、



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

それ以外であればメッセージボックスで注意を促す
こんな感じでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/10/24 16:45

>今、考えられるケースとしては [YYYYM][YYMMD][YYMDD]なのですが


そうですね。定まりませんね。
11111
と入力されたとき、
1年11月11日
11年11月1日
11年1月11日
111年1月1日
これは判断がつきません。
入力の書式が決まらないことには、プログラムで勝手に判断をつけるわけには行きません。

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


なんにしても、この仕様では無理だと思います。(^^;)
    • good
    • 0
この回答へのお礼

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

If IsDate(変数) Then
変数 = Format(変数, "yyyy/mm/dd")
End If

お礼日時:2001/10/24 16:42

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