• ベストアンサー

マクロの記録を書きかえる

下記の構文を可能な限り短くして書きたいのですが、 どのように省略出来るのかがわかりません。 <シート1のB列のデータの入力されているセルまでコピーし、シート2のA2から値で貼付ける> Range(\"B2\").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets(\"Sheet1\").Select Range(\"A2\").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ご指導宜しくお願い致します。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 ><シート1のB列のデータの入力されているセルまでコピーし、シート2のA2から値で貼付ける> 文章とコードが違うようです。 コードを、短くしたり省略する方法は、記録マクロの段階から、一足飛びには覚えないので、地道に、学習しながら覚えてください。それまでは、仕方がないと思ったほうがよいです。 '標準モジュール With Worksheets("Sheet1")   With .Range("B2", .Range("B2").End(xlDown))     Worksheets("Sheet2").Range("A2").Resize(.Rows.Count).Value = .Value   End With End With .Range("B2", .Range("B2").End(xlDown)) が、空振りしたときの保護措置はしていません。 通常は、 .Range("B2", .Range("B65536").End(xlUp)) とは書くものの、どういう状態かは、実際にする人しか分かりません。 なお、 >Range(\"B2\").Select \" という、打ち消しの「\」は必要ありません。

sMyamYs
質問者

お礼

出来ました! VBA、難しいですね。地道に勉強いたします。 ありがとうございました。

その他の回答 (2)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

確認はしていませんがSelectとSelectionは省略できます。 省略したほうが、動作も速くなるはずです。 例えば Range(\"B2\").Range(Selection, Selection.End(xlDown)).Selection.Copy Sheets(\"Sheet1\").Range(\"A2\").Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 確認はしていませんが、試してみてください。

sMyamYs
質問者

お礼

ご回答ありがとうございました。 自力で出来るようになるよう、頑張ります。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

例えば Sub Macro3()  Range(Cells(2, "B"), Cells(65536, "B").End(xlUp)).Copy  Range("A2").PasteSpecial Paste:=xlPasteValues  Application.CutCopyMode = False End Sub

sMyamYs
質問者

お礼

ご回答ありがとうございました。 自力で出来るようになるよう、頑張ります。

関連するQ&A