|
超初心者です。
以下について、どなたかお答えいただける方、ご指導をお願いいたします。
<使用するデータ類>
(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
|
|