• 締切済み

Excelマクロ、VBAについて質問です。

Excelマクロについて質問です。 管理表を作っているのですが、チェックボックスで選択した行の削除ボタンを作りたいと思っています。 ___A____ B____C 1 --- --- --- 2 --- --- --- 3 --- --- --- ・ ・ ・ というような表の先頭にチェックボックスをつくり、チェックを入れた行のみ削除し、 上に詰めるようにしたいと思っています。 上の表で2の行を消したら _A_ B_ C 1 --- --- --- 3 --- --- --- 4 --- --- --- となるような感じです。 どのようなプログラムをつくればいいでしょうか。 アドバイスお願いします。

みんなの回答

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

手順: 開発タブから挿入▼で「フォーム」のチェックボックスを「A2セルの中にちゃんと納まるように」配置する A2セルを下向けにコピーしてチェックボックスごと複製する さらに「フォーム」から「コマンドボタン」を選んで1行目に配置する コマンドボタンを右クリックしてマクロの登録を開始、新規作成をクリックして次のように作成する Sub ボタン1_Click() ’マクロ名は成り行きのまま変更しない事  dim c as object  dim res as range  for each c in activesheet.checkboxes   c.placement = xlmove   if c.value = 1 then    if res is nothing then    set res = c.topleftcell.entirerow    else    set res = union(res, c.topleftcell.entirerow)    end if    c.delete   end if  next  if not res is nothing then  res.delete shift:=xlshiftup  end if End Sub ファイルメニューから終了してエクセルに戻り、チェックボックスをチェックしてから、コマンドボタンをクリックしてマクロを実行する。 #「行を削除したい」ご相談ですが、その行に乗ってたチェックボックスはどうしたいのかご質問に書いてません。 てきとーにやってありますので、必要なら別途修正してください。追加質問は無しでお願いします。 さて。 エクセルには「フォーム」コントロールのチェックボックスと、「ActiveXコントロール(ご利用のエクセルのバージョンがご相談に書かれてませんが、バージョンによっては「コントロールツールボックス」)のチェックボックスの、2種類のチェックボックスが利用できます。 ご相談者さんにはどっちだろうが関係ないと思いますが、寄せられた回答がどっちを前提にしているかによって、具体的なマクロの書き振りも具体的な使い方も違ってきます(片方用のは他方では動かない)ので、ごっちゃにしないよう、よくよく気を付けてそれぞれ皆さんのお話を聞いてください。 またご利用のエクセルのバージョンが不明なので具体的に「ここを選んでこれを操作する」とは、とてもお話ししにくいので、適宜ご自分のソフトの状況に合わせて読み替えてください。

関連するQ&A

  • エクセルマクロの質問です。

    エクセルマクロの質問です。 突然申し訳ございません。 エクセルのマクロボタンをマクロを用いて非表示にすることは可能でしょうか? 例えば a b c d 1ボタン ボタン 2あああ いいい ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ a b c d 1ボタン 2あああ のようにC2に何も入力されていなければC1辺りにあるボタンが消えるようにしたいです。 これは可能でしょうか? 最終的にはチェックボックスでこれを行いたいと考えています。 アドバイスをお願いします。

  • フォームのチエックボックスにチエックを入れるた行のみ印刷出来るマクロ

    エクセル97で仮に下記のような表を作成しています 一番左の列にチエックボックスを並べて、印刷したい行のみチエックを入れると、上の標題とチエックした行のみ印刷したいのですが、そんなマクロのボタンを作成したいのですがご教授お願いします   A B C D E 1   ○○○表 2 □ あ い う え 3 □ え お あ え 4 □ い え お あ 5 □ か き く け

  • エクセルのマクロについて 教えてください。

    エクセルのマクロについて 教えてください。      1          2      …  A あ い う え   お □ □ □       ※□はスペース B か □ □ □   き く け こ C さ し □ □   す せ そ □  : 上記、表を下のように並べ替えたいのですが… ※1行目は4つのセルの結合 1 A あ い う え 2 A お □ □ □ : 1 B か □ □ □ 2 B き く け こ : 1 C さ し □ □ 2 C す せ そ □ :

  • Excel 指定行削除マクロ

    Excel の表で、「行削除」ボタンを押したとき、次の手順で動くマクロを作りたいと思っています。 1.メッセージボックスで削除する行のクリックをうながす。 2.該当行がクリックされ、メッセージボックスのOKボタンが押される。 3.2番目のメッセージボックスに変えて、クリックされた行の A 列のセル(名称欄)   の値(○○)をボックスに取り込んで「○○を削除します」と表示させる。 4.OKボタンが押されたら、その行全体を削除する。 なるべく簡便な方法を教えてください。よろしくお願いします。

  • Excel VBAでのプログラム作成方法

    次のようなことができるプログラムをVBAで作りたいと考えています.概略どのような考え方で作ったらいいか初心者向きに教えてください. ・Excelのシート上にA1~A100,B1~B100,C1~C100までの表を用意し,A,Bにはいずれも予めデータ(文字列)が入っています.Cは空欄です. ・フォーム上にボタンBT1,BT2,BT3を設けます. ・フォーム上にテキストボックスC,D,Eを設けます. 操作は,最初は,表の先頭のデータA1,B1,C1をテキストボックスC,D,Eにそれぞれ表示します.表示された内容に従って,BT1,BT2,BT3のいずれか一つのボタンを押す.どのボタンを押したかの記号をC1の欄に書き込みます.ボタンを押した時点で,次のデータA2,B2,C2が表示されます.これを繰り返し,データが100になった時点で,最初に戻ります. このような機能をもつプログラムを作りたいのですが,どのような作り方をすればいいでしょうか.

  • excel マクロ <フィルタ>

    excelのマクロで分からないことがあるので質問させてもらいます。 たとえば↓の写真のようなデータがあったとして、アルファベットさん(Aさん~Nさん)だけを表示するマクロを作る時は、フィルタをして、番号1~14にチェックをつけて・・・ってことをすると思います。そこに、ボタンをつけたいと思っています。 ボタン(チェックボックス)A、ボタン(チェックボックス)B、ボタン(チェックボックス)C、ボタンD、ボタンEをつけたいと思います。 ボタンAを押すと(チェックをつけると)→アルファベットさん(Aさん~Nさん)だけを表示 ボタンBを押すと(チェックをつけると)→山田、田中、鈴木だけを表示 ボタンCを押すと(チェックをつけると)→斉藤、佐藤、高橋、渡辺、伊藤だけを表示 で A、Bにチェックをつけるとアルファベットさんと山田、田中、鈴木を表示 B、Cにチェックをつけると山田、田中、鈴木、斉藤、佐藤、高橋、渡辺、伊藤を表示 ボタンDを押して、フィルタを解除。 ボタンEを押して、フィルタされた範囲を印刷。 ・・・・・という風に・・・ 【ボタンか、チェックボックスって書いたのは、どちらを使ったらいいのかわからないからであって、ほかにもフォームの種類がありますから、最適なのがありましたら教えてください。】 まとめると、データをボタンで絞り込んで(解除もできる)、ボタンで印刷したい。ということです。 結構、初心者なので、質問の内容がよくわからないかもしれませんけど、わかりやすく教えてください。 お願いします。

  • エクセル マクロ VBA

    エクセルのマクロについて質問いたします。 下記のステップ1からステップ2を一発で行うマクロ文は、 どのようになりますか? 教えてください。 <ステップ1> あるシートのB列に『AAA』という文字を含んでいる行があったら その行は丸ごと削除する。 また、『AAA』という文字を含んでいなかったら、 エラーなどが出ないで、次のステップ2の処理に移る。 <ステップ2> ステップ1と同じシートのC列に、『B』という文字を含んでいる行があったらその行は丸ごと削除する。 ※この”『B』という文字を含んでいる”という意味は、 『B-』や”『B5』と入力されている場合も含めるということです。 また、『B』という文字を含んでいなかったらエラーなどが出ないこと。

  • エクセルのマクロ(VBA)について質問です。

    お世話になります。 エクセルのマクロ(VBA)について質問があります。 下記、わかりにくいと存じますが、お力添え下さい。 ある表があります。 項目としてA列「名前」B列「連絡先」C列「順番」とんでE列に 「乱数」があります。 2行目にこれら項目名が並んでおり、3行目から34行目までは データ入力範囲になります(32名入力出来る。1行目は表のタイトルです) 入力したデータを順不同に並べたく、「順番」項目は乱数を用いた数字を入力させます。 ここから、マクロの登録をします。 ~↓登録中↓~ ・「乱数」項目の1番上(E3)から一番下(E34)までドラッグ  (範囲指定)し、右クリック→コピー ・「順番」項目の一番上(C3)で右クリック→”形式を選択して貼り付け” ”値”にチェックを付けて「OK」 ☆「順番」項目の一番上(C3)から「名前」項目の一番下(A34)まで ドラッグ(範囲指定)し、”昇順で並べ替え”ボタンを押す ~ここまで~ (乱数は、毎回変化してしまうのを防ぐ為、別項目から引っ張ってきて 値だけをコピーするようにしています) このようにマクロを登録しました。 しかし、毎回32名を入力するわけではなく、時には32名未満の入力をする場合があります。 別のセルF40に、COUNTA関数より取った「名前」項目に登録されている数を表示させているのですが、 ☆部分の処理にてこの数だけ範囲指定して並べ替えたいのです。 (セルC3から登録されている人数分だけ範囲指定したい、ということです。20名だけ登録されていれば、 セルC3からセルA22を範囲指定する。指定した部分だけを並べ替える) 32名未満の時、乱数に元づく順番で並べ替える際、データの入って いない行も順番に並んでしまうのですが、空白の行はそのままにし、 データの入っている行だけを上(セルA3)から詰めて並べたいのです。 VBAの編集で、COUNTA関数の結果の数字を変数に代入して使用したいのですが、 そのやり方がわかりません。 どなたかお知恵をくださいますよう、お願い致します。 (わかりにくい記述なので、必要に応じて補足させて頂きます。)

  • エクセルマクロについて

    売上記録表で、品目(A列)、販売日時(B列)、数量(C列)、----と並んでいます。A列の品目は、桃・桃・桃・桃・メロン・メロン・柿・柿・柿・ーーーと 、同じ品目について1行~複数行並んで記入されています。この複数行の内、先頭行を残して、他の行を削除するマクロを教えてください。別のワークシートに作成でもよいです。よろしくお願いします。

  • エクセルのマクロ

    教えてください。   A     B   C 1 部品番号  ○   済印 2 111111   ○   済 3 222222   ○   済 4 333333   ○ という表があるとします。 B列にマクロのボタンを作っておき、 A列に部品番号を入力したら、マクロのボタンを押して、 C列に済、という字を表示したいのです。 1部品入力するごとに、その表示をさせたいです。 2行目、3行目・・・と一つずつマクロを登録して いく方法は、(マクロについては詳しくないので、マクロの記録、マクロの停止、という方法しかわかりません)入力するデータが100件以上あるため、それもどうかな・・と悩んでいます。超初心者なのですが、何とか完成したいと思っています。 よろしくお願い致します。

専門家に質問してみよう