前提
VBAで任意の日付に異動した社員リストを出力するマクロを作っています。
使用するブックは1つで、シートは以下の2枚です。
- 異動DB
- 異動者リスト
実現したいこと
以下の流れをくむマクロを作りたいです。
①ボタンをクリックするとフォームが開く
②異動した年月日を入力し、OKをクリックする
③【異動DB】で「A列は"2"」「B列は”入力した年月日”」でオートフィルタ
④絞り込まれたD列(社員番号)の結果をコピー
⑤【異動者リスト】のA列にペーストする
※【異動者リスト】のB列から右の情報は別のマクロで記入するので、今回はA列を埋めるマクロまでとします。
該当のソースコード
VBA
1Sub idou() 2'異動者リストを作成する 3 4 '任意の日の異動者を抽出する 5 Application.ScreenUpdating = False 6 7 Dim d As Date 8 Dim dval As String 9 Dim flag As Boolean 10 Dim i As Long 11 Dim cnt As Long 12 Dim LastRow As Long 13 14 Dim strDateFormat As String 15 Dim wS1 As Worksheet 16 Dim wS2 As Worksheet 17 18 'ワークシートを変数で宣言する 19 Set wS1 = Worksheets("異動DB") 20 Set wS2 = Worksheets("異動者リスト") 21 22 flag = False 23 strDateFormat = wS1.Range("B2").NumberFormatLocal 24 25 Do While flag = False 26 dval = InputBox("基準日を入力(記入例:1900/1/1)") 27 If StrPtr(dval) = 0 Then 28 'キャンセル又は右上の×をクリックした場合 29 Exit Sub 30 ElseIf dval = "" Then 31 'なにも入力しないでOKをクリックした場合 32 MsgBox ("何も入力されていません") 33 Else 34 '上記以外 35 '入力日付は正しいものとする 36 '(必要があれば入力日付のチェックを行い、エラーなら再入力する) 37 d = CDate(dval) 38 flag = True 39 End If 40 Loop 41 42 '最終行を取得する 43 LastRow = wS2.Cells(Rows.Count, "A").End(xlUp).Row 44 45 '最終列を取得する 46 LastClm = wS2.Cells(2, Columns.Count).End(xlToLeft).Column 47 48 '異動者リストで社員番号より右をクリアする 49 If LastRow > 2 Then 50 Range(wS2.Cells(3, "B"), wS2.Cells(LastRow, LastClm)).ClearContents 51 End If 52 53 'オートフィルタで区分データを抽出する 54 '(抽出する区分は2) 55 wS1.Range("A1").AutoFilter Field:=1, Criteria1:="2" 56 57 'オートフィルタで入力した日付を抽出する 58 wS1.Range("A1").AutoFilter Field:=2, Criteria1:=Format(d, strDateFormat) 59 60 '抽出した社員番号をコピーして貼り付ける 61 wS1.Range("D1").CurrentRegion.Copy wS2.Range("A1") 62 63 Application.ScreenUpdating = True 64 65End Sub
発生している問題・エラーメッセージ
上のコードを実行すると、下画像のように【異動DB】の見出しごとペーストされてしまいました。
試したこと
58行目までのオートフィルタは問題なく動作しています。
CurrentRegionプロパティを使用すると、「ひとかたまりのセル範囲全部」を指定してしまうのがコピー失敗の原因と考えています。
下記の参考URLでは「コピー元のセル範囲を、アドレスで決め打ちする方法は無い」と記載されていたのですが、何か別のアプローチで、「社員番号」の1列分のみコピー&ペーストする方法をご教示いただければと思います。よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
PC:Windows11
ソフト:Microsoft365 Excel
参考URL:
・絞り込んだ結果をコピーする
・社員名簿を作る ~その1~

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/17 07:25