ブック内の特定のシート(要約)を更新するマクロを作成しています。行を挿入して値を追加する必要がありますが、マクロの実行時にどのワークシートがアクティブであっても、要約シートを常に更新する必要があります。現在は、どのシートがアクティブであっても動作します。私は、範囲またはセル参照を与えるたびに、シートに明示的に名前を付けることを試みました。 (私はマクロにかなり新しいので、マクロを記録して出発点とし、選択とコピーの方法が長らく残っています)。Excel VBAは常に参照シートの代わりに可視シート上で実行されます
Sub PasteValuesSummary()
Dim LookupValue As String
Dim LookupRange As Range
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Summary")
Set LookupRange = Sheets("Summary").Range("B1:B1000")
LookupValue = Sheets("LastUpdate").Range("A1").Value
If Not IsError(Application.Match(LookupValue, LookupRange, 0)) Then
Sheets("Summary").Select
Sheets("Summary").Rows("4:4").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Sheets("Summary").Range("B4").Select
Sheets("Summary").Range("B4") = "=LastUpdate!R[-3]C[-1]"
Sheets("Summary").Range("C2:AP2").Select
Selection.Copy
ActiveWindow.ScrollColumn = 1
Sheets("Summary").Range("C4").Select
Sheets("Summary").Paste
Application.CutCopyMode = False
Selection.Copy
Sheets("Summary").Range("B4:AP4").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End Sub
あなたの 'not is noterror ..'行の前に 'ws.Activate'してみてください。 –
これは、アクティブシートを変更していないようで、マクロを実行したときに表示されていたシートに新しい行を挿入する前とまったく同じ動作をします。 –
'xlSheet =ワークシート("要約 ")を設定してから、' Sheets( "Summary") 'を' xlSheet'に変更します。 – gofr1