- ベストアンサー
マクロ ボタンの使い方について
マクロは初心者です。 チェックボックスとボタンを使って他のシートにデータを抽出したいのですが、どのようにすればよいでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
チェックボックスを使っていませんが解答例です。 抜き出しは操作で出来ますが(フィルタ)別シートにセットできない(エクセル2000)ようなので、VBAを使わざるをえません。 Sheet1に表があって、抜き出したい行のA列に○を 付ける。そしてTest01を実行すると、Sheet2に ○を付けた行だけ抜き出す。そういうVBAです。 チェックボックスの代わりをA列が担っています。 (1)Sheet1のVBEウィンドウに下記を貼りつける。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' MsgBox Target.Column If Target.Column = 1 Then If ActiveCell = "○" Then ActiveCell = "" Else ActiveCell = "○" End If End If End Sub 第2列に○をつけたければ、Target.Column = 2に修正してください。 A列に限り、クリックしたセルに○を自動セットします。再クリックで消えます。(同じセルを、なし->○->なしにする時は、○の段階でA列以外のセルをクリックしてから戻ってください。○->なし->○にするときも同じ) (2)Moduleを挿入し下記を貼りつけてください。 OK-WEB行文字数制限で強制改行される個所があるので注意のこと。修正してください。 Sub test01() bt = Worksheets("sheet1").Range("b2").CurrentRegion.Rows.Count ' MsgBox bt k = 2 For i = 2 To bt + 1 If Worksheets("Sheet1").Cells(i, 1) = "○" Then Worksheets("Sheet2").Cells(k, 1) = Worksheets("Sheet1").Cells(i, 2) Worksheets("Sheet2").Cells(k, 2) = Worksheets("Sheet1").Cells(i, 3) k = k + 1 End If Next i End Sub 実行するとSheet1に○を付けた行のみ、Sheet2 に抜き出されます。 (3)本モデルと実際案件の違いによる修正。 シートの第1行は見だしに仮定しています。 データが始まる行をk=4等修正する。 Worksheets("Sheet2").Cells(k, 2) = Worksheets("Sheet1").Cells(i, 3)の項目の数は必要な分だけ増やして 下さい。列を表す2や3は適当に修正してください。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
・「シート」と言う言葉から、エクセルですね。参考までにバージョンは。 ・「データを抽出したい」->(1)Findを使う(2)Filterを使う(3)繰り返し聞く方法など あります。 ・抽出条件を指定する必要がありますが、チェックボックスやボタンで指定させるつもりですか。男か女のような簡単な条件ならともかく、不適なコントロールのように思いますが、どのようにされるにですか。 ・ボタンはプログラムが走るきっかけとかにクリックする ために使うように思いますが。 ・解答者の説明の詳しさ・簡単さのために、シートやフォームにチェックボックスやボタンを貼りつけることは やったことがありますか。 ・ひょっとして、ボタンはツールバーのボタンですか。 (Find) http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv98c2.html (AdvancedFilter) http://rose.ruru.ne.jp/dst/text/Excel2/Excel2.asp
補足
早速説明ありがとうございます。 バージョンは2000です。チェックボックスはやったことがありますが、ボタンは人が作成したものに修正を加える程度しかやったことがありません。 具体的には、データの中からいくつかを選択して(選択条件は計算式では作成できないため、自分で選択する必要があります)その行の1部を他のシートに抽出したいと思っています。選択したものをボタンで1度に抽出できればと思ったのですが。抽出データを送信する必要があるため、そのシートに計算式は入らないようにしたいのですが、どのようにすればよいでしょうか。 よろしくお願いします。
お礼
ご丁寧な回答をどうもありがとうございました。お礼が遅くなり申し訳ありません。 VBAを使ったことがなかったのですが、早速貼り付けて実行してみました。