質問編集履歴

5

コードでresize部分を修正。

2023/01/13 02:57

投稿

koburon
koburon

スコア30

test CHANGED
File without changes
test CHANGED
@@ -260,7 +260,7 @@
260
260
  For cnt = 3 To LastRow
261
261
  If wS3.Cells(i, "A").Value = wS2.Range(cnt, 1).Value Then
262
262
 
263
- wS2.Cells(cnt, 2).Resize(, LastClm).Value = wS3.Cells(i, 2).Resize(, LastClm).Value
263
+ wS2.Cells(cnt, 2).Resize(, LastClm -1 ).Value = wS3.Cells(i, 2).Resize(, LastClm -1 ).Value
264
264
 
265
265
  End If
266
266
  Next cnt

4

修正コードを追記。

2023/01/13 02:15

投稿

koburon
koburon

スコア30

test CHANGED
File without changes
test CHANGED
@@ -176,3 +176,105 @@
176
176
  ・[vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け](https://oshiete.goo.ne.jp/qa/10487810.html)
177
177
  ・[社員名簿を作る ~その1~](https://kuroneconote.com/jinjisystem01/)
178
178
 
179
+ ### 追記
180
+ いただいたコメントを参考に、変数などを書き換えてコードを修正しました。
181
+ ```VBA
182
+ Sub idou()
183
+ '異動者リストを作成する
184
+
185
+ '任意の日の異動者を抽出する
186
+ Application.ScreenUpdating = False
187
+
188
+ Dim d As Date
189
+ Dim dval As String
190
+ Dim flag As Boolean
191
+ Dim Target As Range
192
+ Dim i As Long
193
+ Dim cnt As Long
194
+ Dim LastRow As Long
195
+ Dim LastClm As Long
196
+ Dim strDateFormat As String
197
+ Dim wS1 As Worksheet
198
+ Dim wS2 As Worksheet
199
+ Dim wS3 As Worksheet
200
+
201
+ flag = False
202
+
203
+ Do While flag = False
204
+ dval = InputBox("基準日を入力(記入例:1900/1/1)")
205
+ If StrPtr(dval) = 0 Then
206
+ 'キャンセル又は右上の×をクリックした場合
207
+ Exit Sub
208
+ ElseIf dval = "" Then
209
+ 'なにも入力しないでOKをクリックした場合
210
+ MsgBox ("何も入力されていません")
211
+ Else
212
+ '上記以外
213
+ '入力日付は正しいものとする
214
+ '(必要があれば入力日付のチェックを行い、エラーなら再入力する)
215
+ d = CDate(dval)
216
+ flag = True
217
+ End If
218
+ Loop
219
+
220
+ 'ワークシートを変数で宣言
221
+ Set wS1 = Worksheets("異動DB")
222
+ Set wS2 = Worksheets("異動者リスト")
223
+ Set wS3 = Worksheets("現在の社員名簿")
224
+
225
+ '抽出する日付を記入
226
+ wS1.Activate
227
+ wS1.Range("R1") = d
228
+
229
+ 'B列のデータを変数として取得
230
+ Set Target = Range(Range("B1"), Cells(Rows.Count, 1).End(xlUp))
231
+
232
+ 'オートフィルタでセルA1に入力された区分データを抽出
233
+ '(抽出する区分は2)
234
+ Range("A1").AutoFilter Field:=1, Criteria1:="2"
235
+
236
+ 'オートフィルタでセルR1に入力された日付で抽出
237
+ Range("A1").AutoFilter Field:=2, Criteria1:=Format(d, strDateFormat)
238
+
239
+ '抽出した「社員番号」をコピーして貼り付け
240
+ Range("D1").Offset(1, 0). _
241
+ Resize(Range("D1").CurrentRegion.Rows.Count - 1).Copy wS2.Range("A3")
242
+
243
+ '異動者リストに移動
244
+ wS2.Activate
245
+
246
+ '最終行
247
+ LastRow = wS2.Cells(Rows.Count, "A").End(xlUp).Row
248
+
249
+ '最終列
250
+ LastClm = wS2.Cells(2, Columns.Count).End(xlToLeft).Column
251
+
252
+ '異動者リストで社員番号より右をクリア
253
+ If LastRow > 2 Then
254
+ Range(wS2.Cells(3, "B"), wS2.Cells(LastRow, LastClm)).ClearContents
255
+ End If
256
+
257
+ '異動者リストに社員情報をコピー
258
+ With wS3
259
+ For i = 3 To LastRow
260
+ For cnt = 3 To LastRow
261
+ If wS3.Cells(i, "A").Value = wS2.Range(cnt, 1).Value Then
262
+
263
+ wS2.Cells(cnt, 2).Resize(, LastClm).Value = wS3.Cells(i, 2).Resize(, LastClm).Value
264
+
265
+ End If
266
+ Next cnt
267
+ Next i
268
+ End With
269
+
270
+ 'リストに掛け線を追加
271
+ wS2.Range("A2:en" & LastRow).Borders.LineStyle = xlContinuous
272
+
273
+ '先頭にタイトルをつける
274
+ wS2.Range("A1") = d & "異動者リスト"
275
+
276
+ Application.ScreenUpdating = True
277
+
278
+ End Sub
279
+ ```
280
+

3

誤字を修正。

2023/01/12 08:46

投稿

koburon
koburon

スコア30

test CHANGED
File without changes
test CHANGED
@@ -123,7 +123,7 @@
123
123
  ```
124
124
 
125
125
  ### 発生している問題・エラーメッセージ
126
- 抽出した「社員番号」を貼り付けるとろまでは問題なく動作したのですが、B列から右部分の社員名簿情報が貼りつかない状態です。下記の部分がうまくいかない原因と考えられます。
126
+ 抽出した「社員番号」を貼り付けるとろまでは問題なく動作したのですが、B列から右部分の社員名簿情報が貼りつかない状態です。下記の部分がうまくいかない原因と考えられます。
127
127
 
128
128
  ```VBA
129
129
  '異動者リストに社員情報をコピーする

2

誤字や表現を修正。

2023/01/12 08:46

投稿

koburon
koburon

スコア30

test CHANGED
File without changes
test CHANGED
@@ -123,8 +123,7 @@
123
123
  ```
124
124
 
125
125
  ### 発生している問題・エラーメッセージ
126
- 社員番号が貼りつくだけで、右の社員情報が貼りつかないです。
127
- 最終行取得す部分までは問題なく動作しましたので、下記の部分がうまくいかない原因と考えられます。
126
+ 抽出した「社員番号」貼り付けとろこまでは問題なく動作したのですがB列から右部分の社員名簿情報が貼りつかない状態です。下記の部分がうまくいかない原因と考えられます。
128
127
 
129
128
  ```VBA
130
129
  '異動者リストに社員情報をコピーする

1

参考URLを追加。

2023/01/12 08:29

投稿

koburon
koburon

スコア30

test CHANGED
File without changes
test CHANGED
@@ -173,5 +173,7 @@
173
173
  ### 補足情報(FW/ツールのバージョンなど)
174
174
  PC:Windows11
175
175
  ソフト:Microsoft365 Excel
176
+ 参考URL:
176
- 参考URL:[vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け](https://oshiete.goo.ne.jp/qa/10487810.html)
177
+ [vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け](https://oshiete.goo.ne.jp/qa/10487810.html)
178
+ ・[社員名簿を作る ~その1~](https://kuroneconote.com/jinjisystem01/)
177
179