質問編集履歴

4

追記追加

2021/12/06 04:37

投稿

ma2hiro
ma2hiro

スコア159

test CHANGED
File without changes
test CHANGED
@@ -32,6 +32,14 @@
32
32
 
33
33
 
34
34
 
35
+ 3期A+B 555
36
+
37
+ 4期A+B 666
38
+
39
+ 5期A+B 777
40
+
41
+
42
+
35
43
  3期A+B 55
36
44
 
37
45
  4期A+B 66
@@ -40,6 +48,186 @@
40
48
 
41
49
 
42
50
 
51
+ [利益シート]
52
+
53
+ ```
54
+
55
+ のようなデータがあった場合
56
+
57
+ 実装として
58
+
59
+
60
+
61
+ ```VBA
62
+
63
+ Dim year, kikawarime As Integer, gKi As String
64
+
65
+
66
+
67
+ Private Function getTounenndoGyou() As Variant
68
+
69
+ Dim tmp As Integer
70
+
71
+ Dim rng As Range, tempRng As Range, searchRng As Range
72
+
73
+
74
+
75
+ tmp = year - 2018
76
+
77
+ gKi = Str(tmp) & "期"
78
+
79
+ gKi = Replace(gKi, " ", "")
80
+
81
+ Dim kiGyouArray(7), i As Integer
82
+
83
+
84
+
85
+ Set searchRng = Range("B:B")
86
+
87
+ ' 最初はFindで検索
88
+
89
+ Set rng = searchRng.Find(gKi)
90
+
91
+ ' 検索結果を一時保存
92
+
93
+ Set tempRng = rng
94
+
95
+
96
+
97
+ i = 1
98
+
99
+
100
+
101
+ ' 条件にあったセルが見つからなければNothingが返るので何もしません
102
+
103
+ Do While Not rng Is Nothing
104
+
105
+
106
+
107
+ Debug.Print rng.Row
108
+
109
+ kiGyouArray(i) = rng.Row
110
+
111
+ i = i + 1
112
+
113
+
114
+
115
+ ' FindNextで検索を継続
116
+
117
+ Set rng = searchRng.FindNext() '←←←←←←←←←←←これでどう???
118
+
119
+
120
+
121
+ ' すべて検索し終えると最初に戻るので、Addressで確認!
122
+
123
+ ' これを忘れると無限ループになるので注意!
124
+
125
+ If rng.Address = tempRng.Address Then
126
+
127
+ Exit Do
128
+
129
+ End If
130
+
131
+ Loop
132
+
133
+
134
+
135
+ getTounenndoGyou = kiGyouArray
136
+
137
+
138
+
139
+ End Function
140
+
141
+
142
+
143
+ Sub 全社支社利益の色更新_Click()
144
+
145
+ Dim wb As Workbook
146
+
147
+ Dim fname As String
148
+
149
+ Dim tounendoGyou() As Variant
150
+
151
+ fname = Range("B1").Value
152
+
153
+
154
+
155
+ Set wb = Workbooks.Open(fname)
156
+
157
+ With Worksheets("利益")
158
+
159
+ Worksheets("利益").Select '
160
+
161
+ tounendoGyuu = getTounenndoGyou
162
+
163
+
164
+
165
+ :
166
+
167
+ End Sub
168
+
169
+ ```
170
+
171
+ 以上の上記URLを参考に実装しました……
172
+
173
+
174
+
175
+
176
+
177
+ ですが一回 searchRng.Findをすると上記の場合だと
178
+
179
+ rng が 5期A1 とセットされてしまい
180
+
181
+ 5期のみで検索した次の文言が取得出来ません……
182
+
183
+
184
+
185
+ Set rng = searchRng.FindNext()
186
+
187
+
188
+
189
+ Set rng = searchRng.FindNext(gKi)
190
+
191
+ とすると実行時エラー'1004'と出て「ヘルプ」を押下すると
192
+
193
+
194
+
195
+ [https://docs.microsoft.com/en-us/office/client-developer/excel/excel-home?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/office/client-developer/excel/excel-home?redirectedfrom=MSDN)
196
+
197
+ に飛んでしまうのでen-usをja-jpにして右上の検索窓で
198
+
199
+ FindNextと検索して探した
200
+
201
+ [https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.findnext](https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.findnext)
202
+
203
+ を見てWhat:="X"と指定してあったので
204
+
205
+ Set rng = searchRng.Find(What:=gKi, LookAt:=xlPart)
206
+
207
+ としても駄目でした……
208
+
209
+
210
+
211
+ どうやったら検索の文言を変更せずにFindNextが使用出来るのか
212
+
213
+ なんという語句で調べれば良いかお問い合わせしてよろしいでしょうか?
214
+
215
+
216
+
217
+ 長々と大変申し訳ないのですが何か情報をお持ちな方はコメント頂けますと嬉しく思います。
218
+
219
+
220
+
221
+ --------
222
+
223
+ 追記
224
+
225
+ [利益シート]
226
+
227
+
228
+
229
+
230
+
43
231
  3期A+B 55
44
232
 
45
233
  4期A+B 66
@@ -48,186 +236,6 @@
48
236
 
49
237
 
50
238
 
51
- [利益シート]
52
-
53
- ```
54
-
55
- のようなデータがあった場合
56
-
57
- 実装として
58
-
59
-
60
-
61
- ```VBA
62
-
63
- Dim year, kikawarime As Integer, gKi As String
64
-
65
-
66
-
67
- Private Function getTounenndoGyou() As Variant
68
-
69
- Dim tmp As Integer
70
-
71
- Dim rng As Range, tempRng As Range, searchRng As Range
72
-
73
-
74
-
75
- tmp = year - 2018
76
-
77
- gKi = Str(tmp) & "期"
78
-
79
- gKi = Replace(gKi, " ", "")
80
-
81
- Dim kiGyouArray(7), i As Integer
82
-
83
-
84
-
85
- Set searchRng = Range("B:B")
86
-
87
- ' 最初はFindで検索
88
-
89
- Set rng = searchRng.Find(gKi)
90
-
91
- ' 検索結果を一時保存
92
-
93
- Set tempRng = rng
94
-
95
-
96
-
97
- i = 1
98
-
99
-
100
-
101
- ' 条件にあったセルが見つからなければNothingが返るので何もしません
102
-
103
- Do While Not rng Is Nothing
104
-
105
-
106
-
107
- Debug.Print rng.Row
108
-
109
- kiGyouArray(i) = rng.Row
110
-
111
- i = i + 1
112
-
113
-
114
-
115
- ' FindNextで検索を継続
116
-
117
- Set rng = searchRng.FindNext() '←←←←←←←←←←←これでどう???
118
-
119
-
120
-
121
- ' すべて検索し終えると最初に戻るので、Addressで確認!
122
-
123
- ' これを忘れると無限ループになるので注意!
124
-
125
- If rng.Address = tempRng.Address Then
126
-
127
- Exit Do
128
-
129
- End If
130
-
131
- Loop
132
-
133
-
134
-
135
- getTounenndoGyou = kiGyouArray
136
-
137
-
138
-
139
- End Function
140
-
141
-
142
-
143
- Sub 全社支社利益の色更新_Click()
144
-
145
- Dim wb As Workbook
146
-
147
- Dim fname As String
148
-
149
- Dim tounendoGyou() As Variant
150
-
151
- fname = Range("B1").Value
152
-
153
-
154
-
155
- Set wb = Workbooks.Open(fname)
156
-
157
- With Worksheets("利益")
158
-
159
- Worksheets("利益").Select '
160
-
161
- tounendoGyuu = getTounenndoGyou
162
-
163
-
164
-
165
- :
166
-
167
- End Sub
168
-
169
- ```
170
-
171
- 以上の上記URLを参考に実装しました……
172
-
173
-
174
-
175
-
176
-
177
- ですが一回 searchRng.Findをすると上記の場合だと
178
-
179
- rng が 5期A1 とセットされてしまい
180
-
181
- 5期のみで検索した次の文言が取得出来ません……
182
-
183
-
184
-
185
- Set rng = searchRng.FindNext()
186
-
187
-
188
-
189
- Set rng = searchRng.FindNext(gKi)
190
-
191
- とすると実行時エラー'1004'と出て「ヘルプ」を押下すると
192
-
193
-
194
-
195
- [https://docs.microsoft.com/en-us/office/client-developer/excel/excel-home?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/office/client-developer/excel/excel-home?redirectedfrom=MSDN)
196
-
197
- に飛んでしまうのでen-usをja-jpにして右上の検索窓で
198
-
199
- FindNextと検索して探した
200
-
201
- [https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.findnext](https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.findnext)
202
-
203
- を見てWhat:="X"と指定してあったので
204
-
205
- Set rng = searchRng.Find(What:=gKi, LookAt:=xlPart)
206
-
207
- としても駄目でした……
208
-
209
-
210
-
211
- どうやったら検索の文言を変更せずにFindNextが使用出来るのか
212
-
213
- なんという語句で調べれば良いかお問い合わせしてよろしいでしょうか?
214
-
215
-
216
-
217
- 長々と大変申し訳ないのですが何か情報をお持ちな方はコメント頂けますと嬉しく思います。
218
-
219
-
220
-
221
- --------
222
-
223
- 追記
224
-
225
- [利益シート]
226
-
227
-
228
-
229
-
230
-
231
239
  3期A+B 55
232
240
 
233
241
  4期A+B 66
@@ -236,14 +244,6 @@
236
244
 
237
245
 
238
246
 
239
- 3期A+B 55
240
-
241
- 4期A+B 66
242
-
243
- 5期A+B 77
244
-
245
-
246
-
247
247
  と同じものがあった場合
248
248
 
249
249
  Set rng = searchRng.FindNext(rng)

3

追記追加

2021/12/06 04:37

投稿

ma2hiro
ma2hiro

スコア159

test CHANGED
File without changes
test CHANGED
@@ -32,19 +32,19 @@
32
32
 
33
33
 
34
34
 
35
- 3期 55
35
+ 3期A+B 55
36
-
36
+
37
- 4期 66
37
+ 4期A+B 66
38
-
38
+
39
- 5期 77
39
+ 5期A+B 77
40
-
41
-
42
-
40
+
41
+
42
+
43
- 3期 55
43
+ 3期A+B 55
44
-
44
+
45
- 4期 66
45
+ 4期A+B 66
46
-
46
+
47
- 5期 77
47
+ 5期A+B 77
48
48
 
49
49
 
50
50
 
@@ -228,19 +228,19 @@
228
228
 
229
229
 
230
230
 
231
- 3期 55
231
+ 3期A+B 55
232
-
232
+
233
- 4期 66
233
+ 4期A+B 66
234
-
234
+
235
- 5期 77
235
+ 5期A+B 77
236
-
237
-
238
-
236
+
237
+
238
+
239
- 3期 55
239
+ 3期A+B 55
240
-
240
+
241
- 4期 66
241
+ 4期A+B 66
242
-
242
+
243
- 5期 77
243
+ 5期A+B 77
244
244
 
245
245
 
246
246
 

2

追記追加

2021/12/06 04:37

投稿

ma2hiro
ma2hiro

スコア159

test CHANGED
File without changes
test CHANGED
@@ -32,6 +32,22 @@
32
32
 
33
33
 
34
34
 
35
+ 3期 55
36
+
37
+ 4期 66
38
+
39
+ 5期 77
40
+
41
+
42
+
43
+ 3期 55
44
+
45
+ 4期 66
46
+
47
+ 5期 77
48
+
49
+
50
+
35
51
  [利益シート]
36
52
 
37
53
  ```
@@ -199,3 +215,41 @@
199
215
 
200
216
 
201
217
  長々と大変申し訳ないのですが何か情報をお持ちな方はコメント頂けますと嬉しく思います。
218
+
219
+
220
+
221
+ --------
222
+
223
+ 追記
224
+
225
+ [利益シート]
226
+
227
+
228
+
229
+
230
+
231
+ 3期 55
232
+
233
+ 4期 66
234
+
235
+ 5期 77
236
+
237
+
238
+
239
+ 3期 55
240
+
241
+ 4期 66
242
+
243
+ 5期 77
244
+
245
+
246
+
247
+ と同じものがあった場合
248
+
249
+ Set rng = searchRng.FindNext(rng)
250
+
251
+ では何か先に進めない気がします……
252
+
253
+
254
+
255
+ もうちょっと調べてみます。

1

文言修正

2021/12/06 04:29

投稿

ma2hiro
ma2hiro

スコア159

test CHANGED
File without changes
test CHANGED
@@ -186,7 +186,7 @@
186
186
 
187
187
  を見てWhat:="X"と指定してあったので
188
188
 
189
- Set rng = searchRng.Find(What:=gKi)
189
+ Set rng = searchRng.Find(What:=gKi, LookAt:=xlPart)
190
190
 
191
191
  としても駄目でした……
192
192