Vba 方法';范围';对象的'_工作表';引用其他工作表失败

Vba 方法';范围';对象的'_工作表';引用其他工作表失败,vba,Vba,这是我的密码: Sub showUnique() Dim VAriable As String Dim irange As Range Dim car As Integer Dim Source As Worksheet Dim Target As Worksheet Dim inew As Range Set Source = ActiveSheet Range("f2").Activate 'starting point Do If ActiveCell.Value <

这是我的密码:

Sub showUnique()

Dim VAriable As String
Dim irange As Range
Dim car As Integer
Dim Source As Worksheet
Dim Target As Worksheet
Dim inew As Range

Set Source = ActiveSheet

Range("f2").Activate 'starting point

Do
    If ActiveCell.Value <> ActiveCell.Offset(1, 0).Value Then
        VAriable = ActiveCell.Value
        Set irange = Range("f1:f1000")
    car = -Application.CountIf(irange, VAriable) + 1
  Set inew = Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(car, 0)).EntireRow

'inew.Select

Set Target = Worksheets.Add(after:=Sheets(Sheets.count)) ' after last sheet
Target.Name = VAriable
' 'header row
Source.Range("a1:h1").Copy Target.Range("a1")
'handle Vehicle sales
' Set Target = Worksheets.Add(after:=Source) 'after active shett

' 'copy data
Source.Range(inew).Copy Target.Range("a2")
Target.Range("a1").CurrentRegion.Columns.AutoFit
writeKPI
    End If
    Sheets("Sales").Activate
    ActiveCell.Offset(1, 0).Activate
Loop Until IsEmpty(ActiveCell)

End Sub

我试图引用不同工作表上的一个范围,并将该数据复制到新工作表中

您的
inew
变量是一个
范围
,因此您应该使用

inew.Copy Target.Range("a2")

但是,您应该检查代码并:

  • 清除
    激活
    s(请参阅)
  • 完全限定您对
    范围的引用。例如,我认为

    Set inew = Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(car, 0)).EntireRow
    
    可能是命中注定的

    Set inew = Sheets("Sales").Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(car, 0)).EntireRow
    
Set inew = Sheets("Sales").Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(car, 0)).EntireRow