teratailで助けてもらいながらマクロを作成しているVBA超初心者です。(5日前に始めました)
自分でいろいろ調べながら「抽出」シートのデータを[予定表]シートに値のみコピーするコードを書いてみたのですが、同じようなコードが並んでしまいました。
重複したコードをまとめて、短くコーディングすることはできるでしょうか。
本当はwithを使って書こうとしたのですが、うまく機能しませんでした。
「ActiveSheet.Range("B2").Select」は、エラー回避のために記載しています。
できればもっとわかりやすく書きたいと思っています。
このマクロの呼び出し方
Call Datacopy を使って他のマクロから呼び出します。
ファイルの環境
シート3つ:[予定表][データ一覧][抽出]
教えてほしいこと
1.コードを短くすっきりさせたい。
2.「ActiveSheet.Range("B2").Select」以外の書き方があれば教えてほしい。
お力を貸していただければ幸いです。
よろしくお願いします。
Sub Datacopy() '予定表にコピーする '予定表シートをクリアする Sheets("予定表").Range("C4:J303").ClearContents '以下で抽出シートのデータを予定表に張り付ける Sheets("抽出").Select '名前を張り付ける ActiveSheet.Range("B2").Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Copy Sheets("予定表").Range("C4").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False '1回目の実施日を張り付ける ActiveSheet.Range("L2").Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Copy Sheets("予定表").Range("D4").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False '2回目の予定日を張り付ける ActiveSheet.Range("M2").Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Copy Sheets("予定表").Range("J4").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False '項目①を張り付ける ActiveSheet.Range("K2").Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Copy Sheets("予定表").Range("H4").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False '項目②を張り付ける ActiveSheet.Range("O2").Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Copy Sheets("予定表").Range("I4").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End Sub
回答2件
あなたの回答
tips
プレビュー