回答編集履歴

3

コード修正

2020/03/01 14:31

投稿

hatena19
hatena19

スコア34362

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  Dim s As String
38
38
 
39
- s = Me.日付2.Text
39
+ s = Me.日付.Text
40
40
 
41
41
  If Not IsDate(s) Then Exit Sub
42
42
 

2

質問の追記に対する回答を追記

2020/03/01 14:31

投稿

hatena19
hatena19

スコア34362

test CHANGED
@@ -73,3 +73,17 @@
73
73
 
74
74
 
75
75
  自分なら、最初の案のほうを採用します。
76
+
77
+
78
+
79
+ ---
80
+
81
+ > 追記
82
+
83
+ 現状は日付にカレンダーを表示させて、そこをクリックして日付を表示させることが多いです。
84
+
85
+ なので、カレンダーをクリックして日付が変わったタイミングでrequeryが実行したいです。
86
+
87
+
88
+
89
+ それなら、上の後者のChangeイベントの方法でご希望の動作になります。

1

コード追加

2020/02/29 13:24

投稿

hatena19
hatena19

スコア34362

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  |:--|:--|
12
12
 
13
- |定型入力|0000\-00\-00;0;_|
13
+ |定型入力|0000/00/00;0;_|
14
14
 
15
15
  |自動タブ|はい|
16
16
 
@@ -21,3 +21,55 @@
21
21
  20200227
22
22
 
23
23
  というように8桁の数字を入力すると自動的に次のコントロールへ移動して、Afterupdateイベントが発火します。
24
+
25
+
26
+
27
+ ---
28
+
29
+ Changeイベントで処理したいのなら、下記のような感じで。
30
+
31
+
32
+
33
+ ```vba
34
+
35
+ Private Sub 日付_Change()
36
+
37
+ Dim s As String
38
+
39
+ s = Me.日付2.Text
40
+
41
+ If Not IsDate(s) Then Exit Sub
42
+
43
+
44
+
45
+ Me![年] = Format(s, "yyyy")
46
+
47
+ Me![月] = Format(s, "mm")
48
+
49
+ Me![日] = Format(s, "dd")
50
+
51
+
52
+
53
+ Me![日報サブ].Requery
54
+
55
+ End Sub
56
+
57
+ ```
58
+
59
+
60
+
61
+ Changeイベントで入力中のテキストを取得するのは Textプロパティ。
62
+
63
+ IsDateでテキストが日付かどうか判断して日付のときだけ処理する。
64
+
65
+
66
+
67
+ ただし、これだけだと、2020/02 と入力した時点で日付と判断されるので、
68
+
69
+ 入力するフォーマットを限定して条件を追加したほうがいいかもしれない。
70
+
71
+
72
+
73
+
74
+
75
+ 自分なら、最初の案のほうを採用します。