- ベストアンサー
マクロの記録を書きかえる
下記の構文を可能な限り短くして書きたいのですが、 どのように省略出来るのかがわかりません。 <シート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 ご指導宜しくお願い致します。
- みんなの回答 (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 \" という、打ち消しの「\」は必要ありません。
その他の回答 (2)
- hallo-2007
- ベストアンサー率41% (888/2115)
確認はしていませんが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 確認はしていませんが、試してみてください。
お礼
ご回答ありがとうございました。 自力で出来るようになるよう、頑張ります。
- zap35
- ベストアンサー率44% (1383/3079)
例えば Sub Macro3() Range(Cells(2, "B"), Cells(65536, "B").End(xlUp)).Copy Range("A2").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End Sub
お礼
ご回答ありがとうございました。 自力で出来るようになるよう、頑張ります。
お礼
出来ました! VBA、難しいですね。地道に勉強いたします。 ありがとうございました。