Excel 除非特定工作表处于活动状态,否则VBA代码不起作用

Excel 除非特定工作表处于活动状态,否则VBA代码不起作用,excel,vba,Excel,Vba,如果某些单元格符合条件,我希望剪切行并将其移动到另一个工作表。当“交易”工作表处于活动状态时,以下代码起作用;但是我有 “运行时错误1004” 如果我在其他工作表上运行它 Sub GetMarketingRows() Dim TradingStock As Worksheet Dim r As Long Dim AllItems As Range Set TradingStock = Worksheets("Trading") Set AllItems = TradingStock.Rang

如果某些单元格符合条件,我希望剪切行并将其移动到另一个工作表。当“交易”工作表处于活动状态时,以下代码起作用;但是我有

“运行时错误1004”

如果我在其他工作表上运行它

Sub GetMarketingRows()

Dim TradingStock As Worksheet
Dim r As Long
Dim AllItems As Range

Set TradingStock = Worksheets("Trading")
Set AllItems = TradingStock.Range("A1", Range("A1").End(xlDown))

For r = AllItems.Rows.Count To 2 Step -1

    If (TradingStock.Cells(r, 8) Like "Marketing" Or Cells(r, 7) Like "F-Marketing") Then
    TradingStock.Rows(r).EntireRow.Cut Destination:=Worksheets("Marketing").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    TradingStock.Rows(r).EntireRow.Delete

    End If

Next r

End Sub

Set AllItems = TradingStock.Range("A1", TradingStock.Range("A1").End(xlDown))
第二个
Range()
的作用域是
ActiveSheet

此外,这需要修复

   Destination:=Worksheets("Marketing").Cells( AllItems.Rows.Count, 1)

由于您的
行.Count
也在使用
ActiveSheet

您没有使用工作表引用限定此范围对象:
范围(“A1”).End(xlDown)