tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル日付型が正しいか判断する方法
記事No12443
投稿日: 2008/06/05(Thu) 10:41
投稿者HOTARU
VB6.0で開発しています。
こんにちは(^^)

日付型が正しいか判断する方法が知りたいのですが
いい方法が思いつきません。
yyyy/mm/dd hh:nn:ss
の型で入力されているかチェックしたいのですが、
こんな方法しか思いつきません。

Private chk() as boolean
on Error Goto errorhandle
if Len(strChkdata) <> 19 then
  'ERROR
end if

Dim dt as Date
dt = format(strChkdata,"yyyy/mm/dd hh:nn:ss")

chk  = true
Exit function
errorhandle:
'ERROR
chk = false

strChkdataには、自由に入力できて
2008/08/06 10:30
とかでもエラーにしたいのです。
スプレッドの入力欄でチェックしているのですが・・・
何か他にいい方法はありますか?

[ツリー表示へ]
タイトルRe: 日付型が正しいか判断する方法
記事No12447
投稿日: 2008/06/05(Thu) 12:46
投稿者花ちゃん
> strChkdataには、自由に入力できて
> 2008/08/06 10:30
> とかでもエラーにしたいのです。

色々条件があって完璧なものを望むなら、正規表現・CDate 関数・IsDate 関数 等を
使って自作するしかないのでは。

[ツリー表示へ]
タイトルRe: 日付型が正しいか判断する方法
記事No12452
投稿日: 2008/06/05(Thu) 15:10
投稿者
> strChkdataには、自由に入力できて
> 2008/08/06 10:30
> とかでもエラーにしたいのです。
> スプレッドの入力欄でチェックしているのですが・・・
> 何か他にいい方法はありますか?

strChkdata Like "####/##/## ##:##:##"
で書式をチェックして、
あとは年、月、日、時、分、秒それぞれが正しいかチェックするしかないかな?

年月日は
Left(strChkdata, 10) = Format(DateSerial(Left(strChkdata, 4), Mid(strChkdata, 6, 2), Mid(strChkdata, 9, 2)), "yyyy/MM/dd")

時分秒は0以上かつそれぞれの最大値以下であることをチェックすれば
strChkdata が日付表記として正しいかどうかわかると思います。

もっとスマートな方法があるような気もしますが
パッと思いついたのはこんな感じです。

[ツリー表示へ]