回答編集履歴

1

説明追記

2020/12/09 01:42

投稿

hatena19
hatena19

スコア34073

test CHANGED
@@ -13,3 +13,87 @@
13
13
  If IsNull(Me.tx1) Then
14
14
 
15
15
  ```
16
+
17
+ あるいは、空白が入力されていたり、""(長さ0の文字列)の場合も考慮するなら、下記の方かいいでしょう。
18
+
19
+ ```vba
20
+
21
+ If Trim(Nz(Me.tx1))="" Then
22
+
23
+ ```
24
+
25
+
26
+
27
+ ---
28
+
29
+ 解決済みですか、補足説明。
30
+
31
+ 蛇足かもしれませんが、現状だと日付として正しくないものを入力したときにエラーになります。
32
+
33
+ 例えば、"2020/11/31"とか。IsDate関数で日付として正しいかもチェックした方かいいでしょう。
34
+
35
+
36
+
37
+
38
+
39
+ 自分が書くなら下記のような感じになります。
40
+
41
+ ```vba
42
+
43
+ Private Sub btn_3_Click()
44
+
45
+ Dim strFilter As String
46
+
47
+
48
+
49
+ If Trim(Nz(Me.tx1.Value))="" Then
50
+
51
+ Me.tx1.Value = Null
52
+
53
+ ElseIf IsDate(Me.tx1.Value) Then
54
+
55
+ strFilter =" AND Day >= #" & Me.tx1.Value & "#
56
+
57
+ Else
58
+
59
+ Msgbox "日付として正しい値を入力してください。"
60
+
61
+ Me.tx1.SeFocus
62
+
63
+ Exit Sub
64
+
65
+ End If
66
+
67
+
68
+
69
+ If Trim(Nz(Me.tx2.Value))="" Then
70
+
71
+ Me.tx2.Value = Null
72
+
73
+ ElseIf IsDate(Me.tx2.Value) Then
74
+
75
+ strFilter =" AND Day <= #" & Me.tx2.Value & "#
76
+
77
+ Else
78
+
79
+ Msgbox "日付として正しい値を入力してください。"
80
+
81
+ Me.tx2.SeFocus
82
+
83
+ Exit Sub
84
+
85
+ End If
86
+
87
+
88
+
89
+ strFilter = Mid(strFilter, 6) '先頭の" AND "を削除
90
+
91
+ Me.Filter = strFilter
92
+
93
+ Me.FilterOn = (strFilter <> "")
94
+
95
+
96
+
97
+ End Sub
98
+
99
+ ```