2017-05-07 39 views
0

這裏是我的代碼:Method對象的「範圍」「_Worksheet」失敗引用另一個工作表

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 

收到錯誤「對象‘_Worksheet’的方法‘範圍’失敗」上的代碼

Source.Range(inew).Copy Target.Range("a2") 

我想引用位於不同的工作範圍和數據複製到新的工作表

回答

0

inew變量是Range,所以你應該只使用

inew.Copy Target.Range("a2") 

你應該,但是,通過你的代碼:

  • 擺脫Activate S(參見How to avoid using Select in Excel VBA macros)的,
  • 完全限定的引用Range秒。舉例來說,我覺得

    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 
    
相關問題