■質問内容
日付を認識して時刻を認識しない理由を知りたい
■状況
下記コードを書きました。
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も見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
エクセル関数で日付かどうかの確認?
Excel(エクセル)
-
エクセルのVBAで数値を時刻の値へ変換するには?
Excel(エクセル)
-
IF文に時間(何時から何時まで)の条件文を付けたい
Word(ワード)
-
-
4
エクセルで時間の判定をしています。0時以上5時以下の場合は○と判定したいので、以下のイフ関数を試しま
Excel(エクセル)
-
5
vba 時間の引き算 例えば 15:00から16:15の間の時間は1時間15分ですが、vbaのコード
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleフォームで選択肢に応じ...
-
ユーザーフォームのラベルに日...
-
エクセルのVBAで日付を検索し転...
-
3人のじゃんけんのプログラム
-
【Excel VBA】条件に合った行の...
-
日付の差を求めるには
-
VBA 日付・時刻の判別 時刻を認...
-
JSPからYYYYMMDDで日付入力する
-
今日より前の書き方 マクロ
-
ホワイトボックステストの条件...
-
最近、iPhoneがおかしいです 私...
-
電話の着信が来てないのに着信...
-
アンドロイドから通知無しで鳴る音
-
iPhone14ですが、マナーモード...
-
質問に回答が付くとメールにま...
-
SIM無しアップデート方法
-
GOM Player は、ネットに接続...
-
iPhoneの通知が何故か来なくな...
-
MusicCenter For PC 再生できない
-
canon zoombrowser EX のフォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームのラベルに日...
-
エクセルのVBAで日付を検索し転...
-
DataGridViewでyyyy/MM/dd
-
Eclipseの対応する括弧の強調表...
-
JSPからYYYYMMDDで日付入力する
-
「eclipseで作るカレンダー(ス...
-
VisualBasic6.0のFormat関数で...
-
今日より前の書き方 マクロ
-
【VBA】土日をスキップして日付...
-
1本あたり○円と表示する時どの...
-
3人のじゃんけんのプログラム
-
システム日付とは?
-
VBAで当月の1日を表示するには...
-
【Excel VBA】条件に合った行の...
-
VB6.0 のformat関数について
-
テキストボックスにカレンダー...
-
VBA 日付、未来の日付はエラー...
-
コンボボックスに日付を表示する
-
指定した日付が、その月の第何...
-
VB 日付範囲チェック
おすすめ情報