Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


30 / 13165 ツリー ←次へ | 前へ→

【79961】別々のシートにある列の結合 VBA 18/6/6(水) 21:43 質問[未読]

【79973】Re:別々のシートにある列の結合 VBA γ 18/6/10(日) 11:51 発言[未読]
【79980】Re:別々のシートにある列の結合 VBA 18/6/10(日) 22:21 お礼[未読]

【79973】Re:別々のシートにある列の結合 VBA
発言  γ  - 18/6/10(日) 11:51 -

引用なし
パスワード
   (1)Selectをできるだけしないようにするとこのように短縮できます。

Sub test2()
  Sheets(1).Columns("A:A").Copy
  Worksheets(Worksheets.Count).Columns("A:A").PasteSpecial Paste:=xlPasteValues
  
  Sheets(2).Columns("A:A").Copy
  Worksheets(Worksheets.Count).Columns("B:B").PasteSpecial Paste:=xlPasteValues
  
  Sheets(3).Columns("A:A").Copy
  Worksheets(Worksheets.Count).Columns("C:C").PasteSpecial Paste:=xlPasteValues
End Sub
------------------------------
シートを変数化すると短くなります。
そして、Columns("A:A")はColumns(1)とも書けます。

Sub test3()
  Dim ws As Worksheet
  Set ws = Worksheets(Worksheets.Count)
  
  Sheets(1).Columns(1).Copy
  ws.Columns(1).PasteSpecial Paste:=xlPasteValues
  
  Sheets(2).Columns(1).Copy
  ws.Columns(2).PasteSpecial Paste:=xlPasteValues
  
  Sheets(3).Columns(1).Copy
  ws.Columns(3).PasteSpecial Paste:=xlPasteValues
End Sub
------------------------------
これを繰り返し構文For .. Nextを使って書くと、こうなります。

Sub test4()
  Dim ws As Worksheet
  Dim k As Long
  
  Set ws = Worksheets(Worksheets.Count)
  For k = 1 To 3
    Sheets(k).Columns(1).Copy
    ws.Columns(k).PasteSpecial Paste:=xlPasteValues
  Next
End Sub

参考にしてみて下さい。

【79980】Re:別々のシートにある列の結合 VBA
お礼    - 18/6/10(日) 22:21 -

引用なし
パスワード
   γ 様 マナ様


ご教授いただきありがとうございました。
一つの実行でも、いろいろなやり方があり、最後はあそこまで短くできるのですね。ほんとすばらしいです。勉強になりました。

また、「自分でここまで考えたということを示してから、ご教授いただくことがマナーであること」に気づかせていただきありがとうございました。
以後気をつけたいと思います。

30 / 13165 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free