質問: excel チェックボックスにチェックが付いた複数のセルを別のシートにコピー・貼り付けするマクロを教 excel チェックボックスにチェックが付いた複数のセルを別のシートにコピー・貼り付けするマクロを教えて下さい。 ●マクロにしたい作業 シート1に a1から下に職員名(150名)が記載されており、c1から下に職員名の数だけチェックボックスがあります。 シート1のチェックボックスにチェックが入っている行の職員名をコピーし、シート2のa1から下に貼り付けたいと思っています。 シート1の職員名が入力されているセルはハイパーリンクで同じブック内のシート(例: セルの職員名が"田中"であれば、同じ名前のシート名"田中")に飛ぶようになっており、その仕様もシート2に引き継ぎたいです。 よろしくお願い致します。
回答: こんにちは、 >excel チェックボックスにチェックが付いた複数のセルを別のシートにコピー・貼り付けするマクロ チェックボックスにチェックを付けた時に実行するのは、問題が生じるのでしょうか? チェックを付けた時であれば、チェックボックスが起点になるので比較的容易ですが、、纏めて行う場合 少々判り難くなります。 不明な点などもありますが、補足をいただいても今日は応じられそうにないので、、実行サンプルを下記に記載します。 チェックボックスは、フォームコントロールで、ペースト先c列に作成されるチェックボックスは貼り付け時に削除します。 ご質問のシート1、シート2がシート名です。 sub sample() 'フォームコントロール dim lc as long dim celleft as long, celtop as long dim celright as long, celbottom as long dim rng as range dim objcb as object, delcb as object with sheets("シート1") for each rng in .range("a2:a" & .cells(rows.count, "a").end(xlup).row) lc = .cells(rng.row, .columns.count).end(xltoleft).column with rng.offset(, 2) celtop = .top celleft = .left celbottom = .top + .height celright = .left + .width end with for each objcb in .checkboxes if celtop <= objcb.top and celleft <= objcb.left and _ celbottom >= objcb.top + objcb.height and celright >= objcb.left + objcb.width then if objcb.value = xlon then 'メイン処理 with sheets("シート2") rng.resize(, lc).copy .cells(rows.count, 1).end(xlup).offset(1) for each delcb in .checkboxes if not intersect(delcb.topleftcell, .cells(rows.count, 1).end(xlup).offset(, 2)) _ is nothing then delcb.delete: exit for next end with exit for end if end if next next end with end sub