
■質問内容
日付を認識して時刻を認識しない理由を知りたい
■状況
下記コードを書きました。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseの対応する括弧の強調表...
-
VBAで当月の1日を表示するには...
-
テキストボックスに今日の日付...
-
文字列を日付データに変換 マクロ
-
DataGridViewでyyyy/MM/dd
-
ユーザーフォームのラベルに日...
-
【VBA】土日をスキップして日付...
-
3人のじゃんけんのプログラム
-
VBで時間計算
-
C++で日付判定を行いたい!!
-
「eclipseで作るカレンダー(ス...
-
今日より前の書き方 マクロ
-
VBAで日付入力しているのですが
-
VBAのオーバーフローについて質...
-
VB6.0 のformat関数について
-
システム日付とは?
-
特定の項目セルにスキャン(入...
-
VB 日付範囲チェック
-
GAS ドキュメント
-
ACCESSのフォームに本日...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseの対応する括弧の強調表...
-
人をはめた人は 自分に返ってく...
-
DataGridViewでyyyy/MM/dd
-
エクセルのVBAで日付を検索し転...
-
ユーザーフォームのラベルに日...
-
VisualBasic6.0のFormat関数で...
-
コンボボックスに日付を表示する
-
テキストボックスにカレンダー...
-
1本あたり○円と表示する時どの...
-
指定した日付が、その月の第何...
-
VBAで当月の1日を表示するには...
-
VBA 日付・時刻の判別 時刻を認...
-
今日より前の書き方 マクロ
-
システム日付とは?
-
テキストボックスに今日の日付...
-
DateTimePickerを西暦表示にす...
-
JSPからYYYYMMDDで日付入力する
-
C++で日付判定を行いたい!!
-
ExcelVBAでSQLサーバの日付時刻...
-
【Excel VBA】条件に合った行の...
おすすめ情報