Excel VBA質問箱 IV

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

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


8931 / 76732 ←次へ | 前へ→

【73369】Re:AdvancedFilterメソッドについて
発言  UO3  - 12/12/27(木) 12:33 -

引用なし
パスワード
   ▼ニャンソ さん:

こんにちは

かなりkanabunさんのものと重なっているんだろうとは思いますが。
(きっと)kanabunさんの構成と同じく、抽出ブックである Book2 側にニャンソさんが担当する地区を入力して実行してください。
かってながらBook1,Book2は、以下のようになっているということが前提です。

(Book1)

タイトル行が7行あるということですが、7行目には、ユニークな項目名がセットされていると認識しています。

(Book2)

・B〜F列が抽出・印刷領域。
・G列は空白列
・H列、H1 に "地区" (Book1 の D7 と同じ文字列)、H2から下に、担当する地区コード(1つでも3つでも100個でもOK)

また、印刷は Book2の B〜F列のみを対象にしています。
kanabunさんのアドバイスにあったように「環境にやさしい」コードにしています。
最終的には
.Columns("B:F").PrintPreview
これを
.Columns("B:F").PrintOut
にしてください。

なお、このマクロは Book1,Book2,Book3 とは別の独立したマクロブックに書きます。
実行時には 3つのブックがすべて開かれているということを前提にしています。

Sub Sample2()
  Dim dicP As Object
  Dim dicG As Object
  Dim v As Variant
  Dim c As Range
  Dim sv3 As Variant
  Dim wb As Workbook
  Dim sh As Worksheet
  Dim x As Long
  Dim i As Long
  Dim grp As Variant
  
  Application.ScreenUpdating = False
  
  Set wb = Workbooks("Book1.xls")
  
  Set dicP = CreateObject("Scripting.Dictionary")
  Set dicG = CreateObject("Scripting.Dictionary")
  
  With Workbooks("Book3.xls").Sheets(1)
    For Each c In .Range("D2", .Range("D" & .Rows.Count).End(xlUp))
      dicP(c.Value) = c.Offset(, -1).Value
      dicG(c.Offset(, -1).Value) = True
    Next
  End With
  
  With Workbooks("Book2.xls").Sheets(1)
    sv3 = .Range("B7:F7").Value
    .Range("I1").Value = wb.Sheets(1).Range("E7").Value
    
    For Each grp In dicG
      .Range("B7:F7").Value = Array(wb.Sheets(1).Range("F7").Value, _
                wb.Sheets(1).Range("G7").Value, _
                wb.Sheets(1).Range("G7").Value, _
                wb.Sheets(1).Range("I7").Value, _
                wb.Sheets(1).Range("J7").Value)
      .Range("H2", .Range("H" & .Rows.Count).End(xlUp)).Offset(, 1).Value = grp
      Intersect(.Range("B1", .UsedRange), .Columns("B:F")).Offset(7).ClearContents
      For x = 1 To 2
        Set sh = wb.Sheets(x)
        Call maintGrp(sh, True, dicP)
        If x = 1 Then
          i = 7
        Else
          i = .Range("B" & .Rows.Count).End(xlUp).Row + 1
          .Range("B" & i & ":" & "F" & i).Value = .Range("B7:F7").Value
        End If
        sh.Range("B7", sh.Range("B" & sh.Rows.Count).End(xlUp)).Resize(, 9).AdvancedFilter _
          Action:=xlFilterCopy, CriteriaRange:=.Range("H1").CurrentRegion, _
          CopyToRange:=.Cells(i, "B").Resize(, 5), Unique:=False
        If x <> 1 Then .Rows(i).Delete
        Call maintGrp(sh, False)
      Next
      .Range("B7", .Range("B" & .Rows.Count).End(xlUp)).Resize(, 5).Sort _
        Key1:=.Columns("B"), Order1:=xlAscending, Header:=xlYes
      .Range("B7:F7").Value = sv3
      .Columns("B:F").PrintPreview
    Next
    Intersect(.Range("B1", .UsedRange), .Columns("B:F")).Offset(7).ClearContents
    .Columns("I").Clear
    .Range("B7:F7").Value = sv3
  End With
  
  Application.ScreenUpdating = True
  
End Sub

Private Sub maintGrp(sh As Worksheet, wt As Boolean, Optional dicP As Object)
  Dim c As Range
  With sh.Range("F8", sh.Range("F" & sh.Rows.Count).End(xlUp))
    If wt Then
      For Each c In .Cells
        c.Offset(, -1).Value = dicP(c.Value)
      Next
    Else
      .Offset(, -1).ClearContents
    End If
  End With
End Sub

405 hits

【73344】AdvancedFilterメソッドについて ニャンソ 12/12/21(金) 23:34 質問
【73346】Re:AdvancedFilterメソッドについて UO3 12/12/22(土) 0:44 発言
【73348】Re:AdvancedFilterメソッドについて ニャンソ 12/12/22(土) 8:33 質問
【73349】Re:AdvancedFilterメソッドについて kanabun 12/12/22(土) 10:08 発言
【73350】Re:AdvancedFilterメソッドについて kanabun 12/12/22(土) 10:17 発言
【73353】Re:AdvancedFilterメソッドについて ニャンソ 12/12/22(土) 16:22 回答
【73352】Re:AdvancedFilterメソッドについて ニャンソ 12/12/22(土) 16:18 質問
【73351】Re:AdvancedFilterメソッドについて UO3 12/12/22(土) 14:07 発言
【73354】Re:AdvancedFilterメソッドについて ニャンソ 12/12/22(土) 16:28 回答
【73355】Re:AdvancedFilterメソッドについて UO3 12/12/22(土) 18:23 発言
【73356】Re:AdvancedFilterメソッドについて ニャンソ 12/12/22(土) 19:14 お礼
【73358】Re:AdvancedFilterメソッドについて ニャンソ 12/12/24(月) 21:24 回答
【73360】Re:AdvancedFilterメソッドについて kanabun 12/12/25(火) 0:05 発言
【73362】Re:AdvancedFilterメソッドについて ニャンソ 12/12/25(火) 20:34 お礼
【73361】Re:AdvancedFilterメソッドについて UO3 12/12/25(火) 10:39 発言
【73363】Re:AdvancedFilterメソッドについて ニャンソ 12/12/25(火) 20:54 回答
【73364】Re:AdvancedFilterメソッドについて UO3 12/12/26(水) 9:53 発言
【73366】Re:AdvancedFilterメソッドについて ニャンソ 12/12/26(水) 19:46 お礼
【73369】Re:AdvancedFilterメソッドについて UO3 12/12/27(木) 12:33 発言
【73371】Re:AdvancedFilterメソッドについて ニャンソ 12/12/27(木) 22:03 回答
【73372】Re:AdvancedFilterメソッドについて UO3 12/12/27(木) 22:10 発言
【73379】Re:AdvancedFilterメソッドについて ニャンソ 12/12/28(金) 21:00 回答
【73373】Re:AdvancedFilterメソッドについて UO3 12/12/27(木) 22:15 発言
【73380】Re:AdvancedFilterメソッドについて ニャンソ 12/12/28(金) 21:02 回答
【73382】Re:AdvancedFilterメソッドについて ニャンソ 12/12/28(金) 22:00 発言
【73385】Re:AdvancedFilterメソッドについて ニャンソ 12/12/29(土) 20:11 回答
【73374】Re:AdvancedFilterメソッドについて kanabun 12/12/28(金) 11:23 発言
【73375】Re:AdvancedFilterメソッドについて kanabun 12/12/28(金) 11:42 質問
【73376】Re:AdvancedFilterメソッドについて UO3 12/12/28(金) 12:05 発言
【73377】Re:AdvancedFilterメソッドについて kanabun 12/12/28(金) 19:37 発言
【73378】Re:AdvancedFilterメソッドについて kanabun 12/12/28(金) 20:05 発言
【73381】Re:AdvancedFilterメソッドについて ニャンソ 12/12/28(金) 21:56 回答
【73383】Re:AdvancedFilterメソッドについて kanabun 12/12/29(土) 9:31 発言
【73384】Re:AdvancedFilterメソッドについて kanabun 12/12/29(土) 9:40 発言
【73386】Re:AdvancedFilterメソッドについて ニャンソ 12/12/29(土) 21:23 回答
【73387】Re:AdvancedFilterメソッドについて kanabun 12/12/29(土) 21:58 発言
【73388】Re:AdvancedFilterメソッドについて ニャンソ 13/1/2(水) 21:17 回答
【73390】Re:AdvancedFilterメソッドについて kanabun 13/1/3(木) 0:26 発言
【73391】Re:AdvancedFilterメソッドについて ニャンソ 13/1/3(木) 20:39 回答
【73392】Re:AdvancedFilterメソッドについて kanabun 13/1/3(木) 23:11 発言
【73396】Re:AdvancedFilterメソッドについて ニャンソ 13/1/4(金) 20:59 回答
【73409】Re:AdvancedFilterメソッドについて kanabun 13/1/5(土) 19:04 発言
【73428】Re:AdvancedFilterメソッドについて ニャンソ 13/1/7(月) 21:05 回答
【73429】Re:AdvancedFilterメソッドについて kanabun 13/1/7(月) 23:27 発言
【73451】Re:AdvancedFilterメソッドについて ニャンソ 13/1/11(金) 20:54 回答
【73452】Re:AdvancedFilterメソッドについて kanabun 13/1/11(金) 23:09 発言
【73477】Re:AdvancedFilterメソッドについて ニャンソ 13/1/14(月) 20:07 回答
【73488】Re:AdvancedFilterメソッドについて kanabun 13/1/15(火) 9:39 発言
【73508】Re:AdvancedFilterメソッドについて ニャンソ 13/1/16(水) 21:17 回答
【73511】Re:AdvancedFilterメソッドについて kanabun 13/1/16(水) 22:51 発言
【73521】Re:AdvancedFilterメソッドについて ニャンソ 13/1/17(木) 20:46 回答
【73522】Re:AdvancedFilterメソッドについて kanabun 13/1/17(木) 21:58 発言
【73525】Re:AdvancedFilterメソッドについて ニャンソ 13/1/17(木) 22:47 回答
【73389】Re:AdvancedFilterメソッドについて ニャンソ 13/1/2(水) 21:26 回答
【73365】Re:AdvancedFilterメソッドについて kanabun 12/12/26(水) 9:54 発言
【73367】Re:AdvancedFilterメソッドについて ニャンソ 12/12/26(水) 20:06 回答
【73368】Re:AdvancedFilterメソッドについて kanabun 12/12/26(水) 21:09 質問
【73370】Re:AdvancedFilterメソッドについて ニャンソ 12/12/27(木) 21:49 回答
【73359】Re:AdvancedFilterメソッドについて ニャンソ 12/12/24(月) 21:25 質問

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