• 締切済み

エクセル 2003 リストボックス複数選択後の処理

いつもありがとうございます。 先日もご質問させていただきました。 エクセル VBA 初心者で困っております。 誠に申し訳ありませんが、ご教授をよろしくお願いします。 (sheet2)のデータをリストボックス(sheet1)で複数の値を選択し、 オートフィルタ-に反映させて抽出し、 その後、セルB1以下(sheet1)に入力した値と貼り付けた別のシート(sheet3)で数値1×数値2を掛け算し、数値3にそれぞれ出すのが目的です。 sheet1 リストボックスで複数選択された値を、A1より下に貼り付けていく それぞれB列に数値を入れる 例.(リストボックス選択後)     A     B 1  製品A  5(入力) 2  製品B  3(入力) 3  製品C 2(入力) ・ ・ ・ コマンドボタン1を押すと実行 sheet2(今後増える可能性あり)      製品名      数値1    数値2   数値3 1 製品C       2           2 製品A       2 3 製品E       1 4 製品B       4 5 製品F       3 6 製品D       5 ・ ・ ・ sheet3(貼付先) 実行結果   製品名      数値1    数値2   数値3         1 製品A        2        5      10 2 製品B        4        3      12 3 製品C   2 2 4 以前の質問では、1つずつでの入力で思ったとおりの結果になりました。 今回は複数です。 初心者で、まだ手を出す部分ではないとは思いますが、よろしくお願い致します。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

丸投げで理解しようとしていない(理解するよりコタエ聞いてコピる方が手っ取り早い)ので応用も出来ません。という典型的なご質問です。 sub macro3()  dim r as long ’準備  worksheets("Sheet1").range("A1:B1") = array("製品名","数量2")  worksheets("Sheet2").range("A1:B1") = array("製品名","数量1")  worksheets("Sheet3").range("2:65536").entirerow.delete ’抽出と複写  r = worksheets("Sheet1").range("A65536").end(xlup).row  worksheets("Sheet2").range("A:B").advancedfilter _   action:=xlfiltercopy, _   criteriarange:=worksheets("Sheet1").range("A1:A" & r), _   copytorange:=worksheets("Sheet3").range("A1:B1") ’作表  r = worksheets("Sheet3").range("A65536").end(xlup).row  worksheets("Sheet3").range("C2:C" & r).formula = "=VLOOKUP(A2,Sheet1!A:B,2,FALSE)"  worksheets("Sheet3").range("D2:D" & r).formula = "=B2*C2" end sub

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

マクロ以前の準備: 0.シート1,2,3の1行目にタイトル行を記入し,2行目から実データを記入する   ご質問で書かれているような,いきなりシートの1行目からデータが記入されるような作り方はしない 1.シート1のA列に「入力規則」を取り付け,「商品名をプルダウンメニューから選べる」ように仕込んでおく 2.A列で商品を選んだら,B列に数量を記入しておく 若しくはアナタの考えた「リストボックス」を利用してシート1に商品を記入できるよう準備する マクロの用意: 次のマクロを参考にして,アナタの用意したボタンに取り付けて利用する sub macro1()  dim r as long ’準備  worksheets("Sheet1").range("A1:B1") = array("製品名","数量2")  worksheets("Sheet2").range("A1:B1") = array("製品名","数量1")  worksheets("Sheet3").range("2:65536").entirerow.delete ’抽出と複写  r = worksheets("Sheet1").range("A65536").end(xlup).row  worksheets("Sheet2").range("A:A").advancedfilter _   action:=xlfiltercopy, _   criteriarange:=worksheets("Sheet1").range("A1:A" & r), _   copytorange:=worksheets("Sheet3").range("A1") ’作表  r = worksheets("Sheet3").range("A65536").end(xlup).row  worksheets("Sheet3").range("B2:B" & r).formula = "=VLOOKUP(A2,Sheet2!A:B,2,FALSE)"  worksheets("Sheet3").range("C2:C" & r).formula = "=VLOOKUP(A2,Sheet1!A:B,2,FALSE)"  worksheets("Sheet3").range("D2:D" & r).formula = "=B2*C2" end sub

kirinsan1230
質問者

補足

keithinさん、 早速のご回答誠にありがとうございます。 おおむね、行いたいことが出来ました。 感謝致します。 ただ、1点だけ Sheet2 には、製品名が同じで数量2が違う場合がございます。 そのまま実行すると、Sheet3には製品名はそれぞれで表記されますが、 数値2と3は、おそらくSheet1の一番上の製品の数値が反映されるようです。 ご教授をよろしくお願いいたします。

関連するQ&A

  • エクセルのリストボックスの複数選択について

    エクセルのワークシート上に配置するリストボックスで複数選択する場合に値(番号)を返す方法を教えてください。よろしくお願いします。

  • エクセル VBA 初心者で困っております!

    いつもありがとうございます。VBA初心者です。 データベース(sheet2)のデータをセルA1(sheet1)の値をオートフィルタ-に反映させて抽出し、 その後、セルB1(sheet1)に入力した値と貼り付けた別のシート(sheet3)で数値1×数値2(B1で入力した値)を掛け算し、数値3に出すのが目的です。 sheet1 セルA1【製品名を入力】例、【製品A】を入力 セルB1【数値を入力】例、5を入力 コマンドボタン1を押すと実行 sheet2(データベース)      製品名      数値1    数値2   数値3 1 製品C       2           2 製品A       2 3 製品A       1 4 製品B       4 5 製品D       3 6 製品D       5 sheet3(貼付先) 実行結果   製品名      数値1    数値2   数値3         1 製品A       2        5     10 2 製品A       1        5      5 当初、リストボックスを選択出来るようにし、その値を別のシートに貼り付け、演算処理を行うの方法を模索しておりましたが、 shee2のデータベース、A1・B1(検索値・値)も毎回変わるため、1回ずつの作業を行うように考えなおしたところ、 いきずまってしましました。 時間がないためによろしくお願い致します。

  • リストボックスの複数選択

    ワークシート上に配置するリストボックスで複数選択する場合に値(番号)を返す方法を教えてください。

  • エクセル リストボックスをボタンで選択するマクロ。

    VBA初心者なので教えていただけるとありがたいです。 現在、sheet1にリストボックスを貼り付けています。 そのリストボックスで選択した値を、sheet2のA1セルに貼り付けるようなマクロを作ってみました。 リストボックスのリストは、下のような感じになっています。 空白 ああああ いいいい うううう これとは別にボタンを作成し、ボタンを押すとこのリストボックスの空白(一番上のリスト)を選択するようにしたいのですが、このようなことはできるのでしょうか? なぜこのようなことがしたいのかは、説明が長くなりそうなので省略させていただきます。 どなたか教えていただけるとありがたいです。

  • EXCELでリストを作成して、そのリストを選択した値を複数の入力するよ

    EXCELでリストを作成して、そのリストを選択した値を複数の入力するようにしたいが、どうしたらいいでしょうか? 例えばA1にリストを作成、リスト中”A,B,C,D"が選択できるようにする。 ”A"を選択した場合B1のセルに”あ”が表示、同時にC1のセルに”ア”が表示。 ”B"を選択した場合B2のセルに”い”が表示、同時にC2のセルに”イ”が表示....

  • EXCEL2000 リストボックスの返り値について

    はじめまして。 EXCEL2000で、ワークシート上にリストボックスを作成しました。 複数選択できるタイプなのですが、選択した内容の判断はどのように行えばよいのでしょうか。 例えば、セルA1:A5に「あ」「い」「う」「え」「お」と入力されており、これがリストボックスの内容としてリンクされています。 リストボックスから選択すると、選択した文字に対応してセルB1:B5に「1(選択)」「0(未選択)」と数字のみ入るようにしたいのですが… ワークシート上、あるいはVBAでできる方法がありましたらご教授お願いいたします。 ちなみにVBAは初心者です。

  • Excel、リスト、複数

    こんにちは。 Excel2000でリストから複数の値を選択し、セルに反映させる方法はありますか? 入力規則は1つしか選択できませんよね。 コントロールツールボックスを使えば良いのでしょうか? VBは超初心者のため何とぞ宜しくお願いします。

  • excelでリストボックスで選択した値に定められた値を返す

    excel2000で計算シートを作っています リストボックスで会社名をえらぶと 例:A社 B社 C社 ・セルC2に、A社なら1000 B社なら1200 C社なら800 とあらかじめ定められた値を返す 関数で、値を返すことはできるのですが リストボックスを範囲として指定できないのでしょうか? また、上記をVBAを使わずに、設定することは可能でしょうか? 宜しくお願いいたします

  • Access リストボックス複数選択を抽出条件に

    Access リストボックスで複数選択した値をクエリの抽出条件にしたいです。 ※PC環境:Win7 Access2007 Excel2007 リストボックスで複数選択した値を取得する事はできるのですが、 クエリ実行をすると結果が0件になってしまいます。 他の方のQAなどを参考に以下を作成しましたが、ほしい結果が得られず困っています。 おわかりになる方、ご教示いただけますようお願い致します。 <動作概要> 「画面」の「リストボックス」で複数選択し、 [実行]ボタンを押して、「リストボックス」で選択した値を、「テキストボックス」にセットし、 クエリの抽出条件に、in(テキストボックス)をセットし、テーブルから合致するデータを抽出したい <リストボックス> ※年区分テーブル参照 区分,区分名 1,1年 2,2~3年 3,4~5年 「2,2~3年」「3,4~5年」を選択 ※「区分」は数値型 <VBA> Private Sub 実行_Click()  Dim i As Variant  Me.テキストボックス = Null  For Each i In Me.リストボックス.ItemsSelected Me.テキストボックス = Me.テキストボックス & Me.リストボックス.Column(0, i) & "," Next If Me.テキストボックス <> "" Then  Me.テキストボックス = Left(Me.テキストボックス, Len(Me.テキストボックス) - 1) End If   'ここで画面を確認すると「テキストボックス」には、「2,3」 がセットされている DoCmd.OpenQuery "クエリ"   'テーブルには抽出条件に該当するデータがあるが、クエリ実行結果は0件 End Sub <クエリ SQL> SELECT テーブル FROM テーブル WHERE (((テーブル.区分) in([Forms]![画面]![テキストボックス]))); ※「テーブル.区分」は、数値型 どうぞよろしくお願い致します。

  • エクセルの入力規則 リスト

    お世話になります。 入力規則でリストで選択し、その選択した値によって動的に次の入力リストの中身の変更を行いたいのですが上手く記述できないのでお願いします。 具体的に言いますと シート2を値を管理するシートとし、シート1を用意し シート2に アルファベットリスト(中身:A,B,C,D) Aリスト(中身:あ,い,う,え,お) Bリスト(中身:か,き,く,け,こ) Cリスト(中身:さ,し,す,せ,そ) Dリスト(中身:た,ち,つ,て,と) と命名したセルを用意します。 シート1のA列でアルファベットリストを入力規則のリストで呼べるようにします。 ここまでは出来るのですが シート1のA列でCを選択した場合B列ではCリストの「さ、し、す、せ、そ」を選択できるようにしたいのです。 Aであれば「あいうえお」Bであれば「かきくけこ」と絞りたいのですが上手くできないのです。 質問の内容がわからない場合申し訳ありません、質問頂ければお答えしますので宜しくお願い致します。

専門家に質問してみよう