0

ExcelでのVBA初心者です。セルの値を別のセルに貼り付けてから、同じ列の特定の範囲に自動入力するコードを作成しようとしています。シートをアクティブにせずにバックグラウンドでこれを行うにはどうすればよいですか? これは、マクロ レコーダーが記述したコードです。

Sheets("Results").Select
Range("D8").Select
Selection.Copy
Range("E8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("E2:E8"), Type:=xlFillDefault
Range("E2:E8").Select
Selection.AutoFill Destination:=Range("E2:E44"), Type:=xlFillDefault
Range("E2:E44").Select
Columns("E:E").EntireColumn.AutoFit
4

2 に答える 2

0

親ワークシート (および必要に応じてワークブック) に対して明示的に定義された範囲オブジェクトを操作します。

Dim copyRange as Range
Dim destRange as Range

Set copyRange = Sheets("Results").Range("D8")  'Or Workbooks("Book1").Sheets("SheetName").Range("D8")
Set destRange = Sheets("Other Sheet").Range("E8")  'Or Workbooks("Book2").Sheets("Another Sheet").Range("E8")
copyRange.copy
destRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
destRange.AutoFill destRange.Offset(-7, 0).Resize(8, 1), xlFillDefault
destRange.AutoFill destRange.Resize(36, 1), xlFillDefault

destRange.EntireColumn.Autofit

マクロ レコーダーのセッション中にワークシートをいつ変更したか、または変更したかどうかはわかりませんでした。また、行っていたさまざまな選択/自動入力もわかりませんでした。これらの部品を理解するのに助けが必要な場合はお知らせください。上記で推測しました。

おそらく使用できる別の方法を次に示します。

Dim copyRange as Range
Dim destRange as Range
Dim dt as Date
Set copyRange = Sheets("Results").Range("D8")
Set destRange = Sheets("Other Sheet").Range("E2")  

dt = DateAdd("d", -6, DateValue(copyRange.Value))  'get the value 6 days before
copyRange.Copy destRange 'copy the formatting/etc
destRange.Value = dt     'insert the value
destRange.AutoFill destRange.Resize(44, 1), xlFillDefault
destRange.EntireColumn.Autofit
于 2013-10-13T23:40:49.117 に答える