Excel VBA質問箱 IV

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

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


44940 / 76735 ←次へ | 前へ→

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

引用なし
パスワード
   Jakaさん
返信が遅くなりまして申し訳ありません。
解説ありがとうございました。

>実際、どういった状態で試されているのか解らないし、カスタマイズ及び今作っているプログラムに組み込んで試された結果なのか、それらが解らないので何ともいえないです。

集計ブック
仕入シート
A   B    C     D      E   ・・・  BE    BF
1番号 商品名  単価   数量  合計金額 ・・・  販売数  残数
2 1  りんご  120   100   12,000 ・・・
3 2  ばなな  100   500   50,000 ・・・

販売シート
  A    B    C     D       E   ・・・    
1 番号 商品名  単価  販売数量  金額合計 ・・・  
2 3   りんご  120   50    6,000  ・・・
3 4   ばなな  100   100   10,000  ・・・ 
4 5   りんご  120   20    2,400  ・・・
在庫シート
  A   B     C    D   ・・・   O      P
1 番号 購入番号 販売番号 商品名 ・・・  初期数量  販売数
2 a   1    3    りんご ・・・   100    50 
3 b   2    4    ばなな ・・・   500    100
4 c   1    5    りんご ・・・   100    20 

注文表ブック
在庫入力シート
  A       B    
1 番号      c
2 購入番号    1  
3 販売番号    5
4 商品名    りんご (VLOOKUPで抽出)
   ・      ・
   ・      ・
   ・      ・
 
23 初期数量   100  (VLOOKUPで抽出) 
24 販売数     20  (VLOOKUPで抽出)

    転記ボタン

上記のようになっていて、在庫入力シートのB列を在庫シートに行列を入れ替えて転記しています。
転記後、在庫入力シートの購入番号で在庫シートのオートフィルタかけ、
同じように在庫入力シートの購入番号で仕入シートをオートフィルタかけています。
最終的には在庫シートの販売数を仕入シートのBE列の対応番号に在庫シートのP列の最後の行のセルを張付け、仕入れシートのD-BEの計算をさせて結果をBFに表示する。
ということをしているのです。
というわけで、

Private Sub CommandButton2_Click()
On Error Resume Next
 Dim Wb1 As Workbook
 Dim WB2 As Workbook
 Dim WS3 As Worksheet
 Dim WS2 As Worksheet
 Dim WS2 As Worksheet
 Dim CeV As Range
 Dim Cel As Range, CelAry() As Range
 
 Set Wb1 = Workbooks("入力.xls") 
 Set WS2 = Wb1.Sheets("入力")
 Set WB2 = Workbooks("集計.xls")
 Set WS3 = WB2.Sheets("在庫")
 Set WS5 = WB2.Sheets("仕入")


(myCopyは標準モジュールに定義済み)

myCopy WS2.Range("B1:B43"), _
      WS3.Range("A65536").End(xlUp).Offset(1), True


G = 0
For Each Cel In Sheets("仕入").AutoFilter.Range.Columns("B").SpecialCells(xlVisible)
  G = G + 1
  ReDim Preserve CelAry(1 To G)
  Set CelAry(G) = Cel
Next
G = 0
For Each Cel In Sheets("在庫").AutoFilter.Range.Columns("B").SpecialCells(xlVisible)
  G = G + 1
  If G <> 1 Then Cel.Value = CelAry(G)
  If UBound(CelAry) = G Then Exit For
Next

Erase CelAry

WS5.Activate

 
Range("A1", Range("D65536").End(xlUp)).Offset(,2).Formula = _
      "=IF(BF1,D1-BE1,""D1"")"

ActiveSheet.AutoFilterMode = False

WS3.Activate
ActiveSheet.AutoFilterMode = False

With WS3.Parent
    .Save
    .Close False
End With
 
  Wb1 .Activate

End sub


となっています。
もしかして、したいこととコードが異なっていますか?

▼Jaka さん:
>>For Each Cel In Sheets("Sheet1").AutoFilter.Range.Columns("B").SpecialCells(xlVisible)
>>
>>の("B")は何をさしているのでしょうか?
>オートフィルタした範囲の左から2番目の列。
>B列といった表現は、フィルタ範囲がA:BF列だったので2番目と書くよりB列と書いた方がわかりやすいと思ったんですが....。
>
>因みに
>MsgBox Range("C:G").Columns("A").Address
>とすると、C:G間でのA列と言う事で全体でみたC列を挿します。
>
>>また、ReDim Preserve CelAry(1 To G)にオートメーションエラーが出てしまい、範囲対象外となってしまいました。
>これについては、解りません。(なった事がない?)
>
>実際、どういった状態で試されているのか解らないし、カスタマイズ及び今作っているプログラムに組み込んで試された結果なのか、それらが解らないので何ともいえないです。
>
>質問者で意味不明なのは、カスタマイズや、今作っているプログラムに組み込んで動きません、エラーになります。と言われても、こちらは単品で動く物を書いているから、かみ合わない事も多々あります。
>この辺はどうなのでしょうか?
0 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 お礼

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