|
▼新参者 さん:
>久々に質問させていただきます。
>フィルターで抽出された生産履歴が表示された列がA列からQ列まであります。
>その中からA列とE列の最終列までをコピーして新規シートにコピーしたいと思います。
>マクロで行えば、
>
>range("a1:a10,e1:e10").select
>selection.copy
>
>で、できますが、
>生産履歴は日々増えていきますのでフィルターで抽出された行は増えていくので、
>変数で処理を行うのですが、上記マクロを参考に自分なりに考えたのが、
>dim n as integer 最終行を取得
>range(range(cells(1,1),cells(n,1)),range(cells(1,5),cells(n,5)))
>range((cells(1,1),cells(n,1)),(cells(1,5),cells(n,5)))などと
>
>記述してみましたが、インデックスが違いますとかのエラーが出ます。
>その後の処理はマクロを参考にできましたが上記の列の選択方法ができません。
>初歩的なものかとは思いますが、よろしくお願いします。
>会社ではネットが使えないので自宅で投稿しているのでエラー項目が把握できませんでした。
新規シートにA:Eまでをコピーし、B:Dを削除したらいけませんか?
以下のコードは、
シート1にあるデータのA列にオートフィルターをかけて
A〜Eまでを新規シートにコピーして、B〜Dまでを削除するコードです。
フィルターをかける列と抽出文字はそちらにあわせてみてください。
参考になればよいのですが・・・
Sub test()
Dim Nst As Worksheet
Application.ScreenUpdating = False
With Sheets("Sheet1")
If .AutoFilterMode = True Then .AutoFilterMode = False
.Range("A1").CurrentRegion.AutoFilter 1, Criteria1:="a" 'A列の"a"を抽出しています
With .AutoFilter.Range
If .Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then
MsgBox "データがありません。" '抽出データがない場合
Exit Sub
Else
.Range(.Columns(1), .Columns(5)).Copy
Set Nst = Worksheets.Add(after:=Sheets(Sheets.Count))
With Nst
.Name = "抽出データ"
.PasteSpecial
.Columns("B:D").Delete
End With
End If
End With
.AutoFilterMode = False
End With
Application.ScreenUpdating = True
End Sub
|
|