|
こんにちは。
表題通りなのですが、仕入・販売・在庫と3つのシートがあり
仕入の数量から販売の数量を引いて在庫シートに転記しています。
問題なのが、この3つのシートが全て別ブックの注文表という入力シート
から値だけを転記しているので、3つのシートをいじるわけにはいかないのです。
そこで、注文表から、仕入・在庫のシートをオートフィルタをかけて、
在庫シートに転記する際に、仕入れシートに在庫数を転記させたいのですが、
仕入れシートのオートフィルタをかけても、データの最終行に転記されてしまうの
です。
オートフィルタそかけた行の指定セルに貼り付けするにはどうしたらいいでしょうか?
最終的には、在庫シートに転記された販売数を仕入れシートに転記して、現在数を
だしたいのです。
現在、下記のコードを入れていますが、CeV.Copy 範囲 のところで、転記したい
列ではなく、現在、先頭列にコピーされてしまいます。
(先頭列にデータが入っていないからかもしれませんが。。)
それと、’AS−BE列で現在数を出す。というところで、計算がされていないよ
うです。
ご助言いただきたいので、よろしくお願いします。
******標準モジュール*******
Sub フィルタオン()
Dim Wb1 As Workbook
Dim WB2 As Workbook
Dim WS3 As Worksheet
Dim WS2 As Worksheet
Dim WS2 As Worksheet
Set Wb1 = Workbooks("入力.xls")
Set WS2 = Wb1.Sheets("入力")
Set WB2 = Workbooks("集計.xls")
Set WS3 = WB2.Sheets("在庫")
Set WS5 = WB2.Sheets("仕入")
'入力シートのB23を基準に仕入れシートのオートフィルタをオンにする。
If WS5.AutoFilterMode = False Then
WS5.Range("A:BF").AutoFilter Field:=1, Criteria1:=WS2.Range("B23")
End If
End Sub
Sub オートフィルタオフ()
Dim Wb1 As Workbook
Dim WB2 As Workbook
Dim WS3 As Worksheet
Dim WS2 As Worksheet
Dim WS2 As Worksheet
Set Wb1 = Workbooks("入力.xls")
Set WS2 = Wb1.Sheets("入力")
Set WB2 = Workbooks("集計.xls")
Set WS3 = WB2.Sheets("在庫")
Set WS5 = WB2.Sheets("仕入")
'仕入れシートのオートフィルタ解除。
If WS5.AutoFilterMode = True Then
WS4.Range("B23").AutoFilter
End If
End Sub
Sub フィルタオン1()
Dim Wb1 As Workbook
Dim WB2 As Workbook
Dim WS3 As Worksheet
Dim WS2 As Worksheet
Dim WS2 As Worksheet
Set Wb1 = Workbooks("入力.xls")
Set WS2 = Wb1.Sheets("入力")
Set WB2 = Workbooks("集計.xls")
Set WS3 = WB2.Sheets("在庫")
Set WS5 = WB2.Sheets("仕入")
’在庫シートのA〜AQにオートフィルタをかける(入力シートB23基準)
If WS3.AutoFilterMode = False Then
WS3.Range("A:AQ").AutoFilter Field:=2, Criteria1:=WS4.Range("B23")
Sub オートフィルタオフ1()
Dim Wb1 As Workbook
Dim WB2 As Workbook
Dim WS3 As Worksheet
Dim WS2 As Worksheet
Dim WS2 As Worksheet
Set Wb1 = Workbooks("入力.xls")
Set WS2 = Wb1.Sheets("入力")
Set WB2 = Workbooks("集計.xls")
Set WS3 = WB2.Sheets("在庫")
Set WS5 = WB2.Sheets("仕入")
'在庫シートのオートフィルタ解除。
If WS3.AutoFilterMode = True Then
WS4.Range("B23").AutoFilter
End If
End Sub
******シートモジュール*******
Private Sub CommandButton2_Click()
Dim Wb1 As Workbook
Dim WB2 As Workbook
Dim WS3 As Worksheet
Dim WS2 As Worksheet
Dim WS2 As Worksheet
Set Wb1 = Workbooks("入力.xls")
Set WS2 = Wb1.Sheets("入力")
Set WB2 = Workbooks("集計.xls")
Set WS3 = WB2.Sheets("在庫")
Set WS5 = WB2.Sheets("仕入")
Dim 範囲 As Range
Dim CeV As Range
’オートフィルタをかけた仕入シートのBE列の最後の行
Set 範囲 = WS5.Range("BE65536").End(xlUp).Offset(1)
’オートフィルタをかけた在庫シートのP列の最後の行
Set CeV = WS3.Range("P65536").End(xlUp)
’P列の最終データ(セルの値)をBE列でフィルタをかけて抽出した行に転記
CeV.Copy 範囲
WS5.Activate
’仕入シートのAS1には仕入れ数が入っている。
’AS−BE列で現在数を出す。
Range("AS1", Range("AS65536").End(xlUp)).Offset(, 2).Formula = _
"=IF(BF1,AS1-BE1,""AS"")"
Call オートフィルタオフ1
Call オートフィルタオフ
With WS5.Parent
.Save
End With
With WS3.Parent
.Save
.Close False
End With
WS4.Activate
End Sub
|
|