
■質問内容
日付を認識して時刻を認識しない理由を知りたい
■状況
下記コードを書きました。
Sub 日付を判別()
Dim rng As Range
For Each rng In Cells(1, 1).CurrentRegion
If IsDate(rng) Then Debug.Print rng
Next
End Sub
画像のシート内容で日付であれば書き出すという記述ですが、想定ではB列も書き出されるのですが、実際にはA列のみが書き出されます。
IsDateは日付及び時刻であればTrueを返すという認識でしたが、これが違うのか別の理由かわかりません。
なお、A列B列とも中身はシリアル値(数値)でセルの書式設定の表示形式で時刻にしています。
■動作環境
OS 名:Microsoft Windows 10 Pro
OS バージョン:10.0.16299 N/A ビルド 16299
OS 製造元:Microsoft Corporation
プロセッサ:Intel64 Family 6 Model 42 Stepping 7 GenuineIntel ~2400 Mhz
BIOS バージョン:TOSHIBA Version 2.20 , 2012/06/22
物理メモリの合計:3,988 MB
Excel バージョン:14.0.7192.5000(32ビット) Microsoft Office Standard 2010の一部
以上、ご存知の方ご教示いただければ幸いです。

No.1ベストアンサー
- 回答日時:
こんにちは
確かにご指摘の様な結果になりますね。
↓を読んでも、解釈してくれそうに思いますが、時刻のみや時刻付の日付はValue値で判断させるとFalse判定になるようです。
https://docs.microsoft.com/ja-jp/office/vba/lang …
対処療法的ではありますが、以下の様にすることでご期待の結果を得ることは可能なようです。
If IsDate(rng.Text) Then Debug.Print rng.Value
No.5
- 回答日時:
少々誤植がありましたので訂正します
ISDATEで判定できるのは日付型の文字列のようです
そのため数値では全てFalseで返ってくる仕様のようです
但し"0A"などでもTrueが返ってきます(この変はバグの疑いあり)
Value値を指定すると数値となるのですが、日付のみの場合内部的に日付と識別する何かがあるのか、正常にTrueが返ってきますが(笑)
とりあえず文字列にすれば良いので、先ほど回答したTextを参照するか、Cstr関数等で文字列に置き換えるか・・・手間なだけですね
やはりTextを参照するのが好ましいと思います
No.4
- 回答日時:
ISDATEで判定が行えるのはシリアル値の整数のみのようです
時間はVALUE値を確認すると小数ですので、全てFalseとなります
そのためNo1の方が回答されているようにrng.Textにすると希望するデバッグ結果が得られます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
システム日付とは?
-
VBAのオーバーフローについて質...
-
ユーザーフォームのラベルに日...
-
日付の差を求めるには
-
VB6.0 のformat関数について
-
C#で日付をdateTimePickerに読...
-
Eclipseの対応する括弧の強調表...
-
iPhoneの通知が何故か来なくな...
-
iPhoneのプッシュ通知の過去履...
-
最近、iPhoneがおかしいです 私...
-
スマホにYahooニュースが来ない...
-
このPASMOの通知来ないようにで...
-
ラインの通知設定有りにしてる...
-
iPhoneのメールで、特定の人だ...
-
iPhoneアプリのLINEの音が鳴ら...
-
変なポップアップが出るように...
-
スマホ 電話の着信・受信履歴が...
-
iPhoneの電話設定で、特定の番...
-
LINEのアイコンに通知バッジを...
-
オリンパスカメラのソフトウエ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseの対応する括弧の強調表...
-
DataGridViewでyyyy/MM/dd
-
エクセルのVBAで日付を検索し転...
-
ユーザーフォームのラベルに日...
-
VisualBasic6.0のFormat関数で...
-
1本あたり○円と表示する時どの...
-
システム日付とは?
-
Googleフォームで選択肢に応じ...
-
指定した日付が、その月の第何...
-
VB6.0 のformat関数について
-
VBA 日付、未来の日付はエラー...
-
コンボボックスに日付を表示する
-
JSPからYYYYMMDDで日付入力する
-
テキストボックスに今日の日付...
-
【VBA】土日をスキップして日付...
-
VBAのapplication.ontime メソ...
-
VBでDate型の大小比較がうまく...
-
誕生日より星座を表示するには
-
特定の項目セルにスキャン(入...
-
VBAで日付入力しているのですが
おすすめ情報