代码在特定的工作簿中工作,但不在个人工作簿中

我有一个名为Test的工作簿,并用下面的代码编写了一个macros。 它工作得很好,但是当我把它添加到我的个人工作簿,代码给行Set ws = ThisWorkbook.Sheets("Sheet1")

下标超出范围。

我将代码从模块移动到个人工作簿Sheet 1,然后到ThisWorkbook。 没有帮助。 如果你能给我任何的build议,我可以尝试,将不胜感激。

 Sub KeepOnlyAtSymbolRows() Dim ws As Worksheet Dim rng As Range Dim lastRow As Long Set ws = ThisWorkbook.Sheets("Sheet1") lastRow = ws.Range("E" & ws.Rows.Count).End(xlUp).Row Set rng = ws.Range("E1:E" & lastRow) ' filter and delete all but header row With rng .AutoFilter Field:=1, Criteria1:="<>*@*" .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ' turn off the filters ws.AutoFilterMode = False End Sub 

您是否特别希望参考当前打开的工作簿中的工作表“Sheet1”?

如果是这样,请使用下面的行

 Set ws = ActiveWorkbook.Worksheets("Sheet1") 

如果你只是想参考目前的表格,使用

 Set ws = ActiveSheet 

而如果你只想瞄准第一张纸,不pipe它的名字,

 Set ws = ActiveWorkbook.Worksheets(1) 

代码当前写入的方式似乎是指个人工作簿中的“Sheet1”,而不一定是当前用户处于活动状态的那个。