No.3ベストアンサー
- 回答日時:
IsDateを使います。
Dim セル値 As String
'セル内容を文字列で受け取る
セル値 = Cells(1, 2).Text
'日付と結合してみる
If IsDate("2012/01/01 " & セル値) Then
MsgBox "時刻です"
Else
MsgBox "時刻ではありません"
End If
日付(時刻)を含むDate型の内部形式は
倍精度実数で、整数部は1899/12/31を
1として、現在までの通算日数を表わし、
小数部は1/86400を1秒として0:0:0からの
通算秒数を表わします。
よって、デフォルトプロパティのValueを使うと
実数なのか日付なのか分からないことが
あります。
表面に見えている文字列を取り出すText
プロパティで文字列を取得し、前方に適当な
日付を結合します。これでIsDateがTrueを
返せば、元の文字列は時刻を表わすという
仕掛けです。
No.2
- 回答日時:
そこまで細かいことを気にするのなら "時間" じゃなくて "時刻" って言う癖をつけようや。
違いはわかるな?
IsDateがTrueで、
なおかつ値の文字煤が5で (hh:mm と仮定)、
なおかつ3文字目が ":" だったら True を返すってな関数を作れば?
No.1
- 回答日時:
Istime()関数?というものはVBAに用意されていませんね。
万能な判別法ってのも、考えたら結構大がかりです。(そっちは遠慮しますが)
簡単な方法ということなので、
とても性善説的なものになってしまいますが。
例えば、
時刻が確実に時刻として正しく入力されていること
表示形式を勝手に変えてしまう人がいないこと
0:00が存在する場合は文字列ではないという判定も必要
という条件で
If v.Text = Format(Val(v.Value), "h:mm") Then
(表示形式:デフォルトの"標準"または"h:mm"の場合↑)
とか、
"123:456"とか"1a:b2"のようなイタズラがないこと
という条件で
If v.Text Like "#*:*#" Then
(RegExpとか正規表現使うと少しはマシになりますが。)
とか、
表示文字列で判定するのが簡単といえば簡単かと。
ただ、これが実用に耐えられるかどうかの検証は簡単ではないと思いますが。
私も得意というわけではありませんので、とりあえず、ご参考まで
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
Excelで3E8を3.00E+8にしない方...
-
EXCELで=より左の文字を一括で...
-
Excelで指数表現しないようにす...
-
文字列からタブコードを取り除...
-
エクセルで文字列の最大値を抽...
-
エクセルで文字列をtxtファイル...
-
VBの「As String * 128」とは?
-
VBAでの Replace関数で、ワイル...
-
Left関数とRight関数を合わせた...
-
MS SQLServer のSQLで文字列の...
-
同一セル内に関数と文字列を同...
-
エクセル 数値データを桁をそ...
-
アクセスで特定の数字以外(複...
-
VBA2005 16進を2桁で表示したい。
-
VBA テキストボックスの計算
-
[C言語]fputsとfprintfの違い
-
SQL の Update文(?) と ...
-
Pro c/c++ でホスト変数の後に....
-
VBAを使って選択した範囲の数字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
Excelで指数表現しないようにす...
-
エクセルで文字列の最大値を抽...
-
エクセル 数値データを桁をそ...
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
sedなどで、特定の文字列の後の...
-
MS SQLServer のSQLで文字列の...
-
Left関数とRight関数を合わせた...
-
Msgboxの×が押されたとき
-
アクセスで特定の数字以外(複...
-
【Excel VBA】複数ある特定の文...
-
エクセルでセル内の文字列の最...
-
C#で年月を比較する
おすすめ情報