アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBA初心者です。

オートフィルタしたデータを同じブック内の「抽出」という名前のシートに貼り付けたいのです。シートは月毎に増える予定ですので、シートを選びフィルタをした結果が全て抽出シートに反映されるようにしたいです。
【環境】Excel2010
【データの中身】
 ・列番号2に項目名が入っている。B~Nまで
 ・オートフィルタはF列にある「対応中」で実施。
 ・シート名は201501,201502という感じで増えていく。
【やりたいこと】
 ・それぞれの月別シートにあるボタンクリックで、対応中の行のみ「抽出」シートに連続で貼り付けられること。
連続で、、というのがどうしてもできないです。抽出シートのデータが入っている最終行を取得しないと次のシートが貼り付けられないのまでは理解できるのですが、その場所を指定し貼り付けるやりかたがわからないのです。

 以下、私が記載コード。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Private Sub CommandButton1_Click()
Dim SheetName As String
Dim LastRow As Long
Dim EndRow1 As Long
Dim EndRow2 As Long

SheetName = ActiveSheet.Name

' アクティブシートの日時列内にある「対応中」になっているものをフィルタリングする。

Worksheets(SheetName).Range("b2").AutoFilter Field:=5, Criteria1:="対応中"
EndRow1 = Worksheets(SheetName).Range("b" & Rows.Count).End(xlUp).Row
EndRow2 = Worksheets("抽出").Cells(Rows.Count, 1).End(xlUp).Row + 1
Worksheets(SheetName).Range("b2:n" & EndRow1).Copy Worksheets("抽出").Range(EndRow2, 1)

End Sub

つっこみどころ満載だと思います。勉強不足です。
どうぞ、どこが悪いのかまた参考になるサイトがあるのでしたら教えてください。
宜しくお願い致します。

A 回答 (1件)

こんにちは。



>対応中の行のみ「抽出」シートに連続で貼り付けられること。
>連続で、、というのがどうしてもできないです。

当面の問題としては、

最後の行の
Worksheets(SheetName).Range("b2:n" & EndRow1).Copy Worksheets("抽出").Range(EndRow2, 1)
のRange(EndRow2, 1)は、Range("A1" & EndRow2) か、Cells(EndRow2, 1) ですね。

RangeとCellsは、2つ出てきてややこしいですね。もともと、開発当初はCellsだけだったそうですが、Lotus123を取り込む関係で、2つになったようです。どちらかに統一したほうか分かりやすいかもしれません。

なお、
Worksheets(SheetName)
は、ボタンを直接クリックする関係で、あえて書くなら、ActiveSheet のことでしょうね。
また、ボタンは、ActiveX コントロールで、シートモジュールと決まってしまいますから、本来は、なくてもよいわけです。

例:
Range("b2:n" & EndRow1).Copy Worksheets("抽出").Range(EndRow2, 1)

それから、
If EndRow2 > 1 Then
 ActiveSheet.Range("b3:g" & EndRow1).Copy Worksheets("抽出").Cells(EndRow2, 1)
Else
  ActiveSheet.Range("b2:g" & EndRow1).Copy Worksheets("抽出").Cells(EndRow2, 1)
End If

としてあげれば、項目行が途中に入らなくなりますね。今のところは、このぐらいでしょうか。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています