回答編集履歴
3
訂正します。
test
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
+
> 他にもやり方があれば教えていただけますでしょうか。
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
データのシート(Sheet1)と整形するシート(1,2,3,4,,12)に分けるとコードも構造も簡単になります。
|
6
|
+
|
1
|
-
最初に
|
7
|
+
最初にデータを集積させる表をSheet1に作ります。
|
2
8
|
|
3
9
|
A列に年月日 A2に初期値2021/1/1を、A3に式=A2+1をセット
|
4
10
|
|
@@ -10,8 +16,6 @@
|
|
10
16
|
|
11
17
|
![Sheet1](490bfddfd7573eabfcdfd3f03a6d7b0a.jpeg)
|
12
18
|
|
13
|
-
データのシートと整形したシートに分けました。
|
14
|
-
|
15
19
|
次にシート名「1」を作り
|
16
20
|
|
17
21
|
A1を年を入力することにして、B1に数式=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))
|
@@ -38,7 +42,7 @@
|
|
38
42
|
|
39
43
|
A1を='1'!A1とします。
|
40
44
|
|
41
|
-
2月は29日までだから32・33行の数式を削除、
|
45
|
+
2月は29日までだから32・33行の数式を削除、閏年に対処するため
|
42
46
|
|
43
47
|
A31に=IF(MONTH(A30+1)=B1,A30+1,"")
|
44
48
|
|
@@ -98,7 +102,7 @@
|
|
98
102
|
|
99
103
|
.Offset(0, 5).Value = (UF("myCont7").Value / 24) + (UF("myCont8").Value / 24 / 60)
|
100
104
|
|
101
|
-
.Offset(0, 6).Value = .Offset(0,
|
105
|
+
.Offset(0, 6).Value = .Offset(0, 3).Value - .Offset(0, 2).Value - (.Offset(0, 5).Value - .Offset(0, 4).Value)
|
102
106
|
|
103
107
|
.Offset(0, 7).Value = UF("myCont9").Value
|
104
108
|
|
@@ -156,7 +160,7 @@
|
|
156
160
|
|
157
161
|
フォームのコードです。オブジェクト名はmyUFとし、ラベルLabel1,Label2を配置して、Label1に日付、Label2に曜日
|
158
162
|
|
159
|
-
テキストボックスmycont1~mycont9を配置して、mycont1に出勤の時、mycont2に出勤の分、略
|
163
|
+
コンボ・テキストボックスmycont1~mycont9を配置して、mycont1に出勤の時、mycont2に出勤の分、略
|
160
164
|
|
161
165
|
mycont9に備考をセットします。登録・修正は、フォームをハイドにしてSheet1で行います。
|
162
166
|
|
2
画像をアップしました。
test
CHANGED
@@ -8,7 +8,9 @@
|
|
8
8
|
|
9
9
|
条件付き書式で、土曜日は青色、日曜日は赤色にするといいかもしれません。
|
10
10
|
|
11
|
-
|
11
|
+
![Sheet1](490bfddfd7573eabfcdfd3f03a6d7b0a.jpeg)
|
12
|
+
|
13
|
+
データのシートと整形したシートに分けました。
|
12
14
|
|
13
15
|
次にシート名「1」を作り
|
14
16
|
|
@@ -18,51 +20,37 @@
|
|
18
20
|
|
19
21
|
A3に=DATE(A$1,B$1,1)
|
20
22
|
|
23
|
+
A4に=A3+1
|
24
|
+
|
25
|
+
A4を33行まで数式をコピー
|
26
|
+
|
21
|
-
B3に=INDEX(Sheet1!B$2:B$1
|
27
|
+
B3に数式=INDEX(Sheet1!B$2:B$10000,MATCH(A3,Sheet1!$A$2:$A$10000,0),1)を入れ
|
22
|
-
|
23
|
-
|
28
|
+
|
24
|
-
|
25
|
-
・
|
26
|
-
|
27
|
-
・
|
28
|
-
|
29
|
-
H3に=INDEX(Sheet1!H$2:H$1126,MATCH($A3,Sheet1!$A$2:$A$1126,0),1)
|
30
|
-
|
31
|
-
|
29
|
+
b3をアクティブにしてb3:H33を選択・数式貼り付け
|
32
30
|
|
33
31
|
とすることで、Sheet1の2021年の1月分がコピーができます。
|
34
32
|
|
35
|
-
|
33
|
+
画像では10000が1126になっています。
|
34
|
+
|
36
|
-
|
35
|
+
![イメージ説明](628cae4ed03979561827461ee52fa782.jpeg)
|
36
|
+
|
37
|
-
|
37
|
+
シート名「1」をコピーしてシート名「2」を作り
|
38
|
-
|
39
|
-
|
38
|
+
|
40
|
-
|
41
|
-
を
|
39
|
+
A1を='1'!A1とします。
|
40
|
+
|
42
|
-
|
41
|
+
2月は29日までだから32・33行の数式を削除、
|
42
|
+
|
43
|
-
A3に=
|
43
|
+
A31に=IF(MONTH(A30+1)=B1,A30+1,"")
|
44
|
-
|
44
|
+
|
45
|
-
B3に=INDEX(Sheet1!B$2:B$1
|
45
|
+
B31に=IF(A31="","",INDEX(Sheet1!B$2:B$10000,MATCH($A31,Sheet1!$A$2:$A$10000,0),1))として、B31をアクティブにしてB31:H31を選択・数式貼り付け
|
46
|
-
|
47
|
-
C3に=INDEX(Sheet1!C$2:C$1126,MATCH($A3,Sheet1!$A$2:$A$1126,0),1)
|
48
|
-
|
49
|
-
・
|
50
|
-
|
51
|
-
・
|
52
|
-
|
53
|
-
H2に=INDEX(Sheet1!H$2:H$1126,MATCH($A3,Sheet1!$A$2:$A$1126,0),1)
|
54
46
|
|
55
47
|
とすることで、Sheet1の2021年の2月分がコピーができます。
|
56
48
|
|
57
|
-
|
58
|
-
|
59
|
-
以下12までシートを作成します。
|
49
|
+
以下12まで月に応じたシートを作成します。
|
60
|
-
|
61
|
-
|
62
|
-
|
50
|
+
|
63
|
-
sheet1の入力・修正だけで済み、年の指定も1カ所で済みます。
|
51
|
+
sheet1の入力・修正だけで済み、年の指定もSheet1!A1の1カ所で済みます。
|
52
|
+
|
64
|
-
|
53
|
+
![2](b3adfeb92b6fa33dd210ee5e51d7591a.jpeg)
|
65
|
-
|
66
54
|
|
67
55
|
入力フォームは、Sheet1の目的とする日付のセルをクリックして開くこととし、
|
68
56
|
|
@@ -172,6 +160,8 @@
|
|
172
160
|
|
173
161
|
mycont9に備考をセットします。登録・修正は、フォームをハイドにしてSheet1で行います。
|
174
162
|
|
163
|
+
![イメージ説明](3972cef6bcd9d8cdc04ce0a3309547b4.jpeg)
|
164
|
+
|
175
165
|
```ここに言語を入力
|
176
166
|
|
177
167
|
Private Sub UserForm_Initialize()
|
1
不要文の削除
test
CHANGED
@@ -74,8 +74,6 @@
|
|
74
74
|
|
75
75
|
Dim UF As Object
|
76
76
|
|
77
|
-
Dim I As Long
|
78
|
-
|
79
77
|
|
80
78
|
|
81
79
|
With Target
|
@@ -178,8 +176,6 @@
|
|
178
176
|
|
179
177
|
Private Sub UserForm_Initialize()
|
180
178
|
|
181
|
-
Dim I As Long
|
182
|
-
|
183
179
|
|
184
180
|
|
185
181
|
With ActiveCell
|