【发布时间】:2016-04-10 07:14:51
【问题描述】:
我正在编写一个宏,它将更新工作簿中的特定工作表(摘要)。它需要插入一行并向其添加值,但无论运行宏时哪个工作表处于活动状态,它都需要始终更新摘要表。目前,它在任何一张活跃的工作表上运行。每次我给出范围或单元格引用时,我都尝试明确命名工作表。 (我对宏比较陌生,所以录制了一个宏来给我一个起点,因此选择和复制的方式很冗长)。
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
【问题讨论】:
-
在“if not iserror..”行之前尝试“ws.Activate”?
-
它提供了与之前完全相同的行为,它似乎没有更改活动工作表,并在我运行宏时在视图中插入新行。
-
Set xlSheet = Worksheets("Summary")然后将Sheets("Summary")更改为xlSheet。