| 
    
     |  | 超初心者です。 以下について、どなたかお答えいただける方、ご指導をお願いいたします。
 
 <使用するデータ類>
 (1)顧客情報のデータベース(顧客情報マスター)
 (2)全取引のデータベース(全取引明細)
 (3)請求書フォーム
 (4)ユーザーフォーム(取引年、取引月、学年、教室名 の指定)
 
 <やりたいこと>
 ユーザーフォームの指定を元に、
 1.上記の(2)に対して取引年と取引月のフィルタをかけ、
 2.上記の(1)に対して学年と教室名のフィルタをかける。
 3.さらに、フィルタをかけられた(1)ででてきた顧客名で、
 同じくフィルタをかけられた(2)に対してもう一度フィルタをかけ、
 4.それによってでてきたデータをコピーして請求書フォームに貼り付ける。
 ということをしたいのですが、
 現状では、1. 2.でかけたフィルタの部分が反映されず、
 (1)全体の顧客名で、(2)全部の取引にフィルタがかけられた状態になっています。
 (請求書フォームに、すべての年、月のデータが貼り付けられてしまう状態。)
 
 長くなって恐縮ですが、以下に拙いコードを添付します。
 よろしくお願いいたします。
 
 Private Sub CommandButton1_Click()
 
 If ComboBox1.Value = "" Then
 MsgBox "請求年を選択してください"
 Exit Sub
 End If
 If ComboBox2.Value = "" Then
 MsgBox "請求月を選択してください"
 Exit Sub
 End If
 If ComboBox3.Value = "" Then
 MsgBox "教室名を選択してください"
 Exit Sub
 End If
 If ComboBox4.Value = "" Then
 MsgBox "学年を選択してください"
 Exit Sub
 End If
 
 'マクロ実行画面の凍結
 Application.ScreenUpdating = False
 
 '請求書フォームクリア
 Workbooks("売上管理.XLS").Sheets("請求書フォーム").Activate
 Range("A22:I60").Select
 Selection.ClearContents
 
 
 'AutoFilter(1) 生徒情報マスターへのオートフィルタ
 Workbooks("メニュー_各種マスター.XLS").Worksheets("生徒情報マスター").Activate
 Workbooks("メニュー_各種マスター.XLS").Worksheets("生徒情報マスター").Range("A1").Select
 Selection.autofilter
 Selection.autofilter Field:=5, Criteria1:="=" & ComboBox3.Value
 Selection.autofilter Field:=6, Criteria1:="=" & ComboBox4.Value
 
 'AutoFilter(2) 全取引明細へのオートフィルタ
 Workbooks("売上管理.XLS").Worksheets("全取引明細").Activate
 Workbooks("売上管理.XLS").Worksheets("全取引明細").Range("A1").Select
 Selection.autofilter
 Selection.autofilter Field:=1, Criteria1:="=" & ComboBox1.Value
 Selection.autofilter Field:=2, Criteria1:="=" & ComboBox2.Value
 
 'AutoFilter(3)/copy
 Workbooks("メニュー_各種マスター.XLS").Sheets("生徒情報マスター").Activate
 下端行 = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Range("C1000").End(xlUp).row
 If 下端行 < 2 Then
 Unload Me
 Else
 With Workbooks("メニュー_各種マスター.XLS").Worksheets("生徒情報マスター")
 行 = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Range("C1").Value
 For 行 = 2 To 下端行
 Workbooks("売上管理.XLS").Sheets("全取引明細").Activate
 Workbooks("売上管理.XLS").Worksheets("全取引明細").Select
 Range("D1").Select
 Selection.autofilter
 Selection.autofilter Field:=4, Criteria1:=Workbooks("メニュー_各種マスター.XLS").Worksheets("生徒情報マスター").UsedRange.SpecialCells(xlCellTypeVisible).Range("C" & 行).Value
 Selection.CurrentRegion.Select
 Application.CutCopyMode = False
 Selection.Copy
 ActiveSheet.AutoFilterMode = False
 
 '請求書フォームへのペースト
 Workbooks("売上管理.XLS").Sheets("請求書フォーム").Activate
 Workbooks("売上管理.XLS").Sheets("請求書フォーム").Range("A22").Select
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 Application.CutCopyMode = False
 
 ’印刷
 PrtMsg:
 PrintMenu = MsgBox("印刷を実行してもいいですか?。" & Chr(13) & _
 " [は い]   : 印刷実行" & Chr(13) & _
 " [キャンセル] : 次を読込", 1, "フィルタ印刷")
 
 If PrintMenu = 1 Then 'はい(印刷実行)
 MsgBox "印刷します。"
 Workbooks("売上管理.XLS").Sheets("請求書フォーム").PrintOut
 
 ElseIf PrintMenu = 2 Then 'キャンセル(何もしない)
 
 End If
 Next
 
 Unload Me
 End With
 End If
 End Sub
 
 
 |  |