Excel VBA質問箱 IV

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

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


45009 / 76732 ←次へ | 前へ→

【36730】オートフィルタの結果を他のオートフィル...
質問  初心者  - 06/4/11(火) 11:11 -

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

表題通りなのですが、仕入・販売・在庫と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

1 hits

【36730】オートフィルタの結果を他のオートフィル... 初心者 06/4/11(火) 11:11 質問
【36732】Re:オートフィルタの結果を他のオートフィ... Jaka 06/4/11(火) 11:40 発言
【36734】Re:オートフィルタの結果を他のオートフィ... 初心者 06/4/11(火) 12:30 質問
【36737】Re:オートフィルタの結果を他のオートフィ... Jaka 06/4/11(火) 15:40 発言
【36743】Re:オートフィルタの結果を他のオートフィ... 初心者 06/4/11(火) 18:07 質問
【36748】Re:オートフィルタの結果を他のオートフィ... Jaka 06/4/12(水) 14:24 発言
【36803】Re:オートフィルタの結果を他のオートフィ... 初心者 06/4/14(金) 11:04 質問
【36816】Re:オートフィルタの結果を他のオートフィ... Jaka 06/4/14(金) 16:08 発言
【36820】Re:オートフィルタの結果を他のオートフィ... Jaka 06/4/14(金) 17:22 発言
【36828】Re:オートフィルタの結果を他のオートフィ... 初心者 06/4/14(金) 18:38 質問
【36869】めちゃくちゃ間違ってました。 Jaka 06/4/17(月) 10:33 発言
【36893】Re:オートフィルタの結果を他のオートフィ... 初心者 06/4/17(月) 15:45 お礼

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