こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル マクロ:チェックボックス コピー3

前回、質問した件で、追加で質問させていただきます。

前回の質問は、sheet2のチェックボックスによって、sheet1の列をコピーして、sheet3にペーストするという内容でした。
keithin様からご回答いただき問題は解決しましたが、修正を加えなくてはならなくなりました。

sheet2のチェックボックスによってsheet1の列とsheet4の列をコピーして、sheet3にペーストしようと頑張りましたが、解決できそうにありません。
尚、sheet1とsheet4の行数は同じで、sheet1とsheet4のA列は同じ内容なので必要ありません。
下記が前回のベストアンサーです。

private sub CommandButton1_Click()
 dim res as range
 dim rmax as long
 dim i as integer
 dim flg as boolean

 rmax = worksheets("Sheet1").range("B1").end(xldown).row
 set res = worksheets("Sheet1").range("A1:A" & rmax)

 for i = 1 to 20
  if worksheets("Sheet2").oleobjects("CheckBox" & i).object.value then
   set res = union(res, worksheets("Sheet1").range("A1:A" & rmax).offset(0, i))
   flg = true
  end if
 next i

 if not flg then
 msgbox "NO CHECK"
 exit sub
 end if

 res.copy
 worksheets("Sheet3").range("A1").pastespecial paste:=xlpastevalues
 worksheets("Sheet3").select
end sub

keithin様 無断で借用させていただきました。申し訳ございません。

投稿日時 - 2013-07-14 23:13:02

QNo.8176505

困ってます

質問者が選んだベストアンサー

シート4のどの列をどうコピーしたいのか、何も説明がありません。一体何をしたいのでしょうか。


private sub CommandButton1_Click()
 dim res as range
 dim rmax as long
 dim i as integer
 dim n as integer
 dim temp as range

 rmax = worksheets("Sheet1").range("B1").end(xldown).row
 set res = worksheets("Sheet1").range("A1:A" & rmax)
 worksheets("Sheet3").usedrange.clearcontents

 for i = 1 to 20
  if worksheets("Sheet2").oleobjects("CheckBox" & i).object.value then
   set res = union(res, worksheets("Sheet1").range("A1:A" & rmax).offset(0, i))
   n = n + 1
  end if
 next i

 if n = 0 then
 msgbox "NO CHECK"
 exit sub
 end if

 res.copy
 worksheets("Sheet3").range("A1").pastespecial paste:=xlpastevalues
 set temp = worksheets("Sheet3").cells(1, n + 2)


 set res = worksheets("Sheet4").range("A1:A" & rmax)
 for i = 1 to 20
  if worksheets("Sheet2").oleobjects("CheckBox" & i).object.value then
   set res = union(res, worksheets("Sheet4").range("A1:A" & rmax).offset(0, i))
  end if
 next i
 res.copy
 temp.pastespecial paste:=xlpastevalues
 application.goto worksheets("Sheet3").range("A1")
 temp.entirecolumn.delete shift:=xlshifttoleft

end sub




#補足
>無断で借用させていただきました

教わったマクロをコピーして掲示しても、何の情報提供にもなりません。(それをやるぐらいなら前回のご相談のURLを掲示して、こんな経緯がありましたと情報提供します)

「いま具体的にどういう内容のマクロをご自分のエクセルで動かしているのか」、あるいはもっと役に立つ情報提供としては「あなたはご自分で具体的にどんなマクロを書いて失敗したのか」といった、実際のあなたの今のエクセルの様子をご相談では記入してください。

投稿日時 - 2013-07-16 03:40:45

お礼

keithin様
失礼な質問にもかかわらずご回答いただきありがとうございました。
sheet2にチェックボックスを追加して、CheckBox21とcheckBoxiならsheet1の列、CheckBox22とCheckBoxiならSheet4の列というようにしてコードを使用させていただきました。
nがカウント?することを初めて知り勉強になりました。
進歩のない私ですがご指導よろしくお願い致します。

投稿日時 - 2013-07-16 22:55:28

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問