[[20171011141916]] 『vbaで在庫リストのシートから売上シートへ移動』(だん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『vbaで在庫リストのシートから売上シートへ移動』(だん)

1つのブックの中にシートをいくつか使った在庫や売上リストが入っている
エクセルファイルがございます。

在庫リストのシートから売れた商品の行を
売上リストのシートへ移動して在庫シートからは消すという流れです。

a列〜p列までをいつもコピペしております。
商品検索は管理番号を他のシートのa列に用意して
vlookupにより在庫リストから探して並べ替えてコピペしております。

在庫と売上どちらもテーブルを利用しております。
売上シートには最後の行の次に貼り付けられるようプログラムを組んで頂ければ問題ないかと思われます。

説明不足があるとはおもいますが、ご回答または質問に対する質問お待ちしております。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


>売上シートには最後の行の次に貼り付けられるようプログラムを組んで頂ければ問題ないかと思われます。

丸投げは回答がつきにくいですよ。

>a列〜p列までをいつもコピペしております。
>商品検索は管理番号を他のシートのa列に用意して
>vlookupにより在庫リストから探して並べ替えてコピペしております。

ここが理解できていません。
叩き台です。

 Option Explicit

 Sub test()
    Dim 削除リスト As Range
    Dim 在庫 As Range
    Dim 売上 As Range
    Dim a

    Set 削除リスト = Worksheets("Sheet1").Range("a1").CurrentRegion.Columns(1)
    Set 在庫 = Worksheets("Sheet2").ListObjects(1).Range
    Set 売上 = Worksheets("Sheet3").ListObjects(1).Range

    a = Application.Transpose(削除リスト)

    With 在庫
        .AutoFilter 1, a, xlFilterValues
        If .Columns(1).SpecialCells(xlCellTypeVisible).Count > 1 Then
            .Resize(.Rows.Count - 1).Offset(1).Copy 売上.Cells(1).Offset(売上.Rows.Count)
            Application.DisplayAlerts = False
            .Offset(1).Delete
            Application.DisplayAlerts = True
        End If
        .AutoFilter
    End With

 End Sub

(マナ) 2017/10/11(水) 22:15


上記のプログラムでシート名編集と削除リストのrande("a1")⇒c列に管理番号を入れているのでrange("c1")
に変更してみました。

エラーはでませんでしたが、在庫シートから売上シートに移りませんでした。

タイトル項目の行ですが、在庫シートは2行目、売上シートは3行目なのですがこちらが影響しておりますでしょうか?

また、説明不足と訂正がございます。申し訳ございません。

在庫シートのタイトル項目はa~x列までテーブルで作成しており、
売上シートはa~y列までテーブル作成しております。

在庫から売上に移動したいのはa~qまでを
b~qです。

売上シートだけa列に連番を振っているため、貼り付けたい場所がb列からとなります。

ご確認宜しくお願い致します
(だん) 2017/10/12(木) 14:05


現在のコードでは
在庫シートのA列でフィルタをかけて、
抽出された行を、売上シートに転記しています。

>.AutoFilter 1, a, xlFilterValues

在庫シートの1列目に管理番号があるという前提です。
違うのなら修正してください。

>在庫から売上に移動したいのはa~qまでを
>b~qです。

b~rの間違いでは?

(マナ) 2017/10/12(木) 20:37


おそくなりました。
a~qではなくa~pの間違いでした。

現在のコードでは
在庫シートのA列でフィルタをかけて、
抽出された行を、売上シートに転記しています。
>こちらについてですが、売上に転記した管理コードは同じブックの
違うシートのc列に入力しております。

今回のプログラムは、転記したい管理番号用のシート、在庫シート、売上シートの3つをつかって
処理しているということでお間違いないでしょうか?
(だん) 2017/10/16(月) 14:45


>今回のプログラムは、転記したい管理番号用のシート、在庫シート、売上シートの3つをつかって
>処理している

はい。
在庫シートで、オートフィルタを利用して
転記したい管理番号のみ抽出しています。
在庫シートの何列目に、管理番号があるのでしょうか?

(マナ) 2017/10/16(月) 20:10


在庫シートの管理番号は
a列(一列目)にございます
(だん) 2017/10/17(火) 14:34

>Set 削除リスト = Worksheets("Sheet1").Range("a1").CurrentRegion.Columns(1)

a1から連続する範囲の1列目なので、A列になります。
これをC列にする必要があります。

(マナ) 2017/10/17(火) 19:20


修正してマクロを実行致しましたが、エラーは出ず売上シートに移動できておりませんでした。
在庫と売上のテーブルはどちらも2行目からございますが、こちらはコードとあっておりますでしょうか?
一行目はどちらもテーブルではないのでフィルターをかけてると並べ替えも上手くいきません。

申し訳ございませんが今一度ご指導頂けますでしょうか。
(だん) 2017/10/18(水) 10:28


>在庫と売上のテーブルはどちらも2行目からございますが、

以下で確認してください。
テーブル範囲を選択できていませんか?

 Option Explicit

 Sub 在庫select()

    Worksheets("Sheet2").Select
    Worksheets("Sheet2").ListObjects(1).Range.Select

 End Sub

 Sub 売上select()

    Worksheets("Sheet3").Select
    Worksheets("Sheet3").ListObjects(1).Range.Select

 End Sub

で、↓を試してみてください。

 Sub 削除リストselect()

    Worksheets("Sheet1").Select
    Worksheets("Sheet1").Range("a1").CurrentRegion.Columns(1).Select

 End Sub

どこが選択されましたか。
管理番号(C列)を選択できていませんよね。
まずは、この問題を解決する必要があります。

(マナ) 2017/10/18(水) 19:07


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.