2017-02-10 5 views
2

Ich möchte die sht2.Select und sht2.Range("B2").Select im folgenden Code loswerden. Gibt es eine Möglichkeit, dies zu tun?Loswerden in VBA Code

Sub Remaining() 

Dim sht2 As Worksheet  
Dim cell As Range 

Set sht2 = ThisWorkbook.Worksheets("Sheet2") 

sht2.Select 
sht2.Range("B2").Select  
With sht2 
    For Each cell In .Range("B2", Cells(Rows.Count, "B").End(xlUp)) 
     If .Range("A:A").Find(What:=cell.Value2, LookAt:=xlWhole) Is Nothing Then 
      Intersect(.UsedRange, cell.EntireRow).Offset(, 1).Copy Sheets("Sheet1").Cells(Rows.Count, "L").End(xlUp).Offset(1) 
      cell.Interior.Color = vbYellow 
     End If 
    Next cell 
End With 

End Sub 
+4

löschen Sie einfach diese 2 Zeilen, Ihr Code funktioniert :), vergessen Sie nicht vollständig Ihre '.Range ("B2" zu qualifizieren, Zellen (Rows.Count, "B"). End (xlUp)) 'to' .Range ("B2", .Cells (.Rows.Count, "B"). Ende (xlUp)) ' –

+0

@Shairado Nicht unbedingt - es gibt ein unqualifiziertes' Cells() 'in der Range() rufen Sie die 'For Each'-Zeile auf –

+0

Bitte fügen Sie Ihren Posts keine Anrede wie" Danke "hinzu; das ist kein Diskussionsforum :-). – TylerH

Antwort

6
Sub Remaining() 

    Dim sht2 As Worksheet 
    Dim cell As Range 

    Set sht2 = ThisWorkbook.Worksheets("Sheet2") 

    With sht2 
     'A few fixes in the following line to make sure everything 
     ' is referencing the correct sheet 
     For Each cell In .Range(.Range("B2"), .Cells(.Rows.Count, "B").End(xlUp)) 
      If .Range("A:A").Find(What:=cell.Value2, LookAt:=xlWhole) Is Nothing Then 
       Intersect(.UsedRange, cell.EntireRow).Offset(, 1).Copy _ 
         Sheets("Sheet1").Cells(Rows.Count, "L").End(xlUp).Offset(1) 
       cell.Interior.Color = vbYellow 
      End If 
     Next cell 
    End With 

End Sub 
+0

Genau das, was ich suchte – CC268

+1

Sollte nicht vollständig qualifizieren Sie Ihre 'Sheets (" Sheet1 "). Zellen (Rows.Count," L "). Ende (XlUp) .Offset (1)' mit 'Sheets (" Sheet1 ") .Cells (Sheets (" Sheet1 ") .Rows.Count," L "). Ende (xlUp) .Offset (1)'? –

+1

'sht2' wird aus der 'Worksheets'-Sammlung und' Sheet1' aus der 'Sheets'-Sammlung erhalten. Da "Sheet1" ein 'Worksheet'-Objekt ist, sollte es auch aus der' Worksheets'-Sammlung stammen. Und im Idealfall auch mit einem Arbeitsbuch qualifiziert, in der Tat @Shairado. –