Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


934 / 13644 ツリー ←次へ | 前へ→

【77409】オートフィルタ 繰り返し はる 15/9/17(木) 13:34 質問[未読]
【77410】Re:オートフィルタ 繰り返し ウッシ 15/9/17(木) 14:02 回答[未読]
【77411】Re:オートフィルタ 繰り返し はる 15/9/17(木) 14:17 発言[未読]
【77412】Re:オートフィルタ 繰り返し ウッシ 15/9/17(木) 15:38 回答[未読]
【77413】Re:オートフィルタ 繰り返し はる 15/9/17(木) 16:15 お礼[未読]
【77425】Re:オートフィルタ 繰り返し はる 15/9/30(水) 15:22 質問[未読]
【77426】Re:オートフィルタ 繰り返し はる 15/9/30(水) 16:25 発言[未読]

【77409】オートフィルタ 繰り返し
質問  はる  - 15/9/17(木) 13:34 -

引用なし
パスワード
   お初にお目にかかります。VBAの入り口をうろうろしている初心者です。
過去ログ等を参考にして自分で組んでみましたがエラーで動かないので
ご指摘お願い致します。


Sub Macro3()
'
'
’#データ更新
  Columns("E:j").Clear
  Sheets("計画").Range("K:N").Copy
  Sheets("マクロセット").Range("E:H").PasteSpecial Paste:=xlPasteValues
  Sheets("Data Base").Range("AP4:AP100").Copy
  Sheets("マクロセット").Range("J8").PasteSpecial Paste:=xlPasteValues
'
  Range("E3:H3").Select
  Selection.AutoFilter
' 
  Dim i As Integer
  If ActiveWorkbook.Worksheets.Count < 8 Then Exit Sub
  For i = 8 To ActiveWorkbook.Worksheets.Count
  ActiveSheet.Range("$E$3:$H$5000").AutoFilter Field:=4, Criteria1:=Cells(10, i).Value
  Range("E3").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
  Sheets(i).Range("B53").PasteSpecial Paste:=xlPasteValues
  Next i
  Sheets("マクロセット").Select
  
End Sub


左から8シート目以降に枚数未定のシートが40~70枚ほどあります。
E:H列のデータを、シート名(J列に順に記載)を用いH列でフィルターを掛け、
その抽出データを各シートに貼り付けを行いたいです。

色々調べてみたのですが、どう修正すればいいのか見つけきれず。。
どうかよろしくお願い致します

【77410】Re:オートフィルタ 繰り返し
回答  ウッシ  - 15/9/17(木) 14:02 -

引用なし
パスワード
   こんにちは

セル位置とシートが良く分かりません。

ActiveSheet名は?
Sheets("マクロセット")?

Sheets("計画")は無関係?

どこで、どんなエラーになるのでしょうか?

Sub test()
  Dim aSh As Worksheet
  Dim i  As Integer
  
  Set aSh = ActiveSheet
  '#データ更新
  With aSh
    .Columns("E:J").Clear
    Sheets("計画").Range("K:N").Copy
    Sheets("マクロセット").Range("E:H").PasteSpecial Paste:=xlPasteValues
    Sheets("Data Base").Range("AP4:AP100").Copy
    Sheets("マクロセット").Range("J8").PasteSpecial Paste:=xlPasteValues
    
    .Range("E3:H3").AutoFilter

    If ActiveWorkbook.Worksheets.Count < 8 Then Exit Sub
    For i = 8 To ActiveWorkbook.Worksheets.Count
      .Range("$E$3:$H$5000").AutoFilter _
        Field:=4, Criteria1:=.Cells(10, i).Value
      .Range("E3").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
      Sheets(i).Range("B53").PasteSpecial Paste:=xlPasteValues
    Next i
  End With
  
  Sheets("マクロセット").Select
 
End Sub

ActiveSheetがSheets("マクロセット")ならもっと整理出来ます。

【77411】Re:オートフィルタ 繰り返し
発言  はる  - 15/9/17(木) 14:17 -

引用なし
パスワード
   ActiveSheetは、Sheets("マクロセット")です。

Sheets("計画")及びSheets("DateBase")は、
別ブックやシートから数式でデータを集めています。
フィルターに関してだけなら無関係です。

オートフィルタのマクロ作成中に分りにくくなったので、
一旦Sheets("マクロセット")データに集約しました・・

エラー内容といいますか、
J列の内容でフィルターされておらず、
全データがシート(8)にコピーされてしまいます。

返答頂いたマクロも同じ現象です。

【77412】Re:オートフィルタ 繰り返し
回答  ウッシ  - 15/9/17(木) 15:38 -

引用なし
パスワード
   こんにちは

    Sheets("計画").Range("K:N").Copy
    .Range("E:H").PasteSpecial Paste:=xlPasteValues

でコピーされたデータ部分の1〜2行目、セルE1:H2は空白になっていますか?
.Range("E3").CurrentRegionに影響があります。

また、
Criteria1:=.Cells(10, i).Value

Criteria1:=.Cells(i, 10).Value
ですね。

Sub test()
  Dim aSh As Worksheet
  Dim i  As Integer
  
  Set aSh = Sheets("マクロセット")
  '#データ更新
  With aSh
    .Columns("E:J").Clear
    Sheets("計画").Range("K:N").Copy
    .Range("E:H").PasteSpecial Paste:=xlPasteValues
    Sheets("Data Base").Range("AP4:AP100").Copy
    .Range("J8").PasteSpecial Paste:=xlPasteValues
    
    .Range("E3:H3").AutoFilter

    If ActiveWorkbook.Worksheets.Count < 8 Then Exit Sub
    For i = 8 To ActiveWorkbook.Worksheets.Count
      .Range("$E$3:$H$5000").AutoFilter _
        Field:=4, Criteria1:=.Cells(i, 10).Value
      .Range("E3").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
      Sheets(i).Range("B53").PasteSpecial Paste:=xlPasteValues
    Next i
  End With
  
End Sub

【77413】Re:オートフィルタ 繰り返し
お礼  はる  - 15/9/17(木) 16:15 -

引用なし
パスワード
   >    Sheets("計画").Range("K:N").Copy
>    .Range("E:H").PasteSpecial Paste:=xlPasteValues
>
>でコピーされたデータ部分の1〜2行目、セルE1:H2は空白になっていますか?
>.Range("E3").CurrentRegionに影響があります。
空欄です。何かしら埋めておいたほうが良かったでしょうか

頂いたマクロで思うような結果が出ました!
ありがとうございます!!!!!!

【77425】Re:オートフィルタ 繰り返し
質問  はる  - 15/9/30(水) 15:22 -

引用なし
パスワード
   お礼を返したところに重ねて質問で申し訳ありません。

E3〜H*に貼り付けたデータをG列で降順にソートした後
各貼り付けへ移行したいです。
(*頂いた下記データにソートを追加したい)
.Range("E:H").PasteSpecial Paste:=xlPasteValues
の下に

.Range("E3").CurrentRegion.Sort(KEY1:=RANGE("G3"),Order1:=xlDescending)

と入力してみましたが
コンパイルエラー: 修正候補:=
で行き詰ってしまいました。
CurrentRegionでは認識しないのでしょうか・・・


>Sub test()
>  Dim aSh As Worksheet
>  Dim i  As Integer
>  
>  Set aSh = Sheets("マクロセット")
>  '#データ更新
>  With aSh
>    .Columns("E:J").Clear
>    Sheets("計画").Range("K:N").Copy
>    .Range("E:H").PasteSpecial Paste:=xlPasteValues
>    Sheets("Data Base").Range("AP4:AP100").Copy
>    .Range("J8").PasteSpecial Paste:=xlPasteValues
>    
>    .Range("E3:H3").AutoFilter
>
>    If ActiveWorkbook.Worksheets.Count < 8 Then Exit Sub
>    For i = 8 To ActiveWorkbook.Worksheets.Count
>      .Range("$E$3:$H$5000").AutoFilter _
>        Field:=4, Criteria1:=.Cells(i, 10).Value
>      .Range("E3").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
>      Sheets(i).Range("B53").PasteSpecial Paste:=xlPasteValues
>    Next i
>  End With
>  
>End Sub

【77426】Re:オートフィルタ 繰り返し
発言  はる  - 15/9/30(水) 16:25 -

引用なし
パスワード
   すいません。自己解決しました

.Range("E3").CurrentRegion.Sort Key1:=Range("G3"), Order1:=xlDescending
悪さしてたのはSort 後の()でした。

お騒がせしました。また行き詰ったらお願いいたします。

934 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free