2016-05-15 6 views
0

Ich habe meine Codierung getestet, indem ich mehr Daten löschte und hinzufügte, und dann merkte ich, dass mit meiner Programmierung etwas nicht in Ordnung war. Anfangs habe ich mit 3 Personen unter der Rubrik "LEAVE" angefangen zu programmieren.Warum hat es in der dritten Zeile angehalten, nachdem ich ein anderes Blatt ausgewählt habe

Also habe ich versucht, Leute aus dem Abschnitt zu löschen, funktioniert die Codierung immer noch. Als ich in diesem Abschnitt eine weitere Person hinzufügte, erkannte ich, dass meine Programmierung nicht funktionierte. Als ich die Daten von 3 auf 4 Personen änderte, blieb es bei der 3. Person stehen. Es hat die Schleife nicht fortgesetzt, um die vierte Person zu erkennen.

I getestet und festgestellt, dass es war, als ich mit

Sheets("Cash").Select 

ab gestartet, dass es nicht funktioniert hat.

Ohne diesen funktioniert die Schleife noch und es kann die 4. Person erkennen.

Do While Cells(ShiftRowName, 1) <> "" 
    Set ShiftName = Sheets("Shift Roster").Cells(ShiftRowName, ShiftColName) 

    If ShiftName = "" Or IsEmpty(ShiftName) Then 
     Exit Do 
    Else 
     'When the following coding was added, 
     'It stopped detecting at the 3rd person. 
     Sheets("Cash").Select 

     Range("C1").Select 
     Cells.Find("Name").Activate 
     r2 = ActiveCell.Row 

     CashRowName = r2 + 1 

     Do While Cells(CashRowName, 1) <> "" 
      Set CashName = Sheets("Cash").Cells(CashRowName, CashColName) 

      If CashName = "" Or IsEmpty(CashName) Then 
       Exit Do 
      Else 
       MsgBox CashName 
       MsgBox ShiftName 

       End If 
      CashRowName = CashRowName + 1 
     Loop 

     End If 
    ShiftRowName = ShiftRowName + 1 
Loop 

Mögliche Lösung?

EDIT:

Wegen Vorwärts Ed Erleuchtung, fand ich die Antwort auf mein Problem. Vielen Dank.

habe ich den folgenden Code

With Sheets("Cash") 
    Set FindRow = .Range("C:C").Find(What:="Name", LookIn:=xlValues) 
End With 
Dim FindRowNumber As Long 
CashRowName = FindRow.Row 
+0

Sie müssen zu dem Blatt mit Ihrem Blatt mit der Liste zurückkehren, nachdem Sie getan haben, was Sie tun, auf dem "Cash" Blatt. Alternativ ist es besser, nur Ihr CASH-Blatt zu manipulieren, ohne es tatsächlich auszuwählen. –

+0

so ist die Schleife "Do While Cells (CashRowName, 1)", um auf Sheet-Zellen "Shift Roster" zu wirken? – user3598756

+0

Ja, fügen Sie nur Blätter ("Cash") würde tun – stupidgal

Antwort

1
 'When the following coding was added, 
     'It stopped detecting at the 3rd person. 

     r2 = Sheets("Cash").Range("C1").Find("Name").row 
     'not sure if the above coding will actually work, 
     'but it avoids switching sheets and tries to work 
     'directly on worksheet "CASH". 

     CashRowName = r2 + 1 

Das ist ein kleiner Ausschnitt des Codes bearbeitet ist. Ich bin mir ziemlich sicher, dass meine Syntax ausgeschaltet ist. Das Wichtigste ist, dass Sie vermeiden, Arbeitsblätter in der Mitte Ihrer Schleife zu ändern. Wenn Sie wiederholt auswählen, verlangsamt sich der Code und sollte vermieden werden.