質問するログイン新規登録

回答編集履歴

2

コード追記

2021/07/11 05:40

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -33,4 +33,22 @@
33
33
  sht_1.Activate
34
34
  Exit Function 'Endで強制終了は危険なのでExitに変更
35
35
  End If
36
+ ```
37
+ ---
38
+ ループ処理で検索する方法のコード例
39
+ ```vba
40
+ Dim rng As Range, flg As Boolean
41
+ For Each rng In Range("C9:C24")
42
+ If Format(rng.Value, "hh:mm") = "12:30" Then
43
+ flg = True
44
+ Exit For
45
+ End If
46
+ Next
47
+ If flg = False Then
48
+ MsgBox "sheet2に時間がなく、" & vbCrLf & "削除出来ませんでした。" & vbCrLf & "プログラムを強制終了します。"
49
+ sht_1.Activate
50
+ Exit Function
51
+ End If
52
+ ```
53
+
36
54
  ```

1

説明追記

2021/07/11 05:40

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -19,4 +19,18 @@
19
19
  CDblで倍精度浮動小数点数に変換してますが、浮動小数点数には誤差がつきものですので、厳密な比較には向かないというのはプログラミングのあるあるです。
20
20
 
21
21
 
22
- Match関数では日付/時刻型では検索できないのでCDblでの変換は必須なので、Match関数はあきらめてループで処理するぐらいしかなさそうです。あるいはFind関数でもいけるかも。
22
+ Match関数では日付/時刻型では検索できないのでCDblでの変換は必須なので、Match関数はあきらめてループで処理するぐらいしかなさそうです。あるいはFindメソッドでもいけるかも。
23
+
24
+ Findメソッドのコード例
25
+ ```vba
26
+ '###################################
27
+ '# 時間の行検索
28
+ '###################################
29
+ Dim rng As Range
30
+ set rng = Range("C9:C80").Find(CDate(num2(1)))
31
+ If Rng Is Nothing Then
32
+ MsgBox "sheet2に時間がなく、" & vbCrLf & "削除出来ませんでした。" & vbCrLf & "プログラムを強制終了します。"
33
+ sht_1.Activate
34
+ Exit Function 'Endで強制終了は危険なのでExitに変更
35
+ End If
36
+ ```