[[20220630101946]] 『日付の判定、分数形式』(jahakas) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付の判定、分数形式』(jahakas)

 A1に「'1/50」を入力します。
 これが、日付か判定するために、

 If IsDate(Range("A1")) = False Then
     MsgBox "NG"
 End If

 を実行します。
 NGの表示がされません。
 どう判定したら良いのでしょうか?
 1/50は、50人中の順番1位を示しています。
 分母分子とも桁数に制限はありません。

< 使用 Excel:unknown、使用 OS:unknown >


文字の日付は、人間の思うようにはいかないということでしょうか?
知らない人から見たら、やはり判断できないと思いますけど。

MsgBox CDate(Range("A1").Value)
とやっても日付に変換されてしまうし。

たまたま、50日なんて物はないという認識でしょうか?
エクセルと人間の文字認識の違いなので、専門の方はどうやっているのか知りません。
(難しいですか?) 2022/06/30(木) 10:43


 ?CDate(Range("A1"))
   ↓
 1950/01/01 

 ですからねぇ。

 ?TypeName(Range("A1").Value)
 なら↓
 String

 ですけど。

 ところで、
 順位として使用する事が決まってる(用途が定義済の)値について
 わざわざ日付がどうかを判定しなければならない理由って何なんでしょう?

 いまいち何を判断したいのか分かりませんです。

(白茶) 2022/06/30(木) 10:44


MsgBox Format(CDate(Range("A1").Value), "mm/dd")

これで、文字比較する?

>わざわざ日付がどうかを判定しなければならない理由って何なんでしょう?

白茶さんの一言では?
(難しいですか?) 2022/06/30(木) 10:48


 どうもXX/YYの場合
 月/日
 日/月
 年/月
 月/年
 とみなせるか、をチェックしているようだ。
 なお年は4桁まで。
(ねむねむ) 2022/06/30(木) 10:49

すでに皆さんからの指摘がありますが、「1/50」だと1950/1/1と認識(解釈)するっぽいですね。
どうしてもというなら、とりあえず適当な年を追加して判定させてはどうですか?
    Sub テキトー()
        Debug.Print IsDate("2022/" & Range("A1").Value)
    End Sub

(もこな2 ) 2022/06/30(木) 10:54


すみません。
家にはエアコン無いので、これからバックレます。
他の回答者からの返答をお持ちください。
(難しいですか?) 2022/06/30(木) 11:00

便乗質問^^;
入力規則で
1900/1/1以上
とかでは。どうなるのでせう
(隠居Z) 2022/06/30(木) 11:12

日付と判断されない他の形式を使えばよいのでは?

n人中 m番目を表すなら、例えば、 

 m // n 
などとすればよいのでは?
これはIsDateでTrueにはなりません。一応区別はつきます。
(全く別の形式のほうがよいかも。 m Of n とか。)

そういう話ではないのかな。だったら失礼。

(γ) 2022/06/30(木) 11:27


ありがとうございます。
色々、試してみて、うまくいかない時は、再度、お尋ねしたいと思います。
(jahakas) 2022/06/30(木) 12:27

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.