2016-05-15 6 views
0

データを削除して追加することでコードをテストしていました。最初は、「LEAVE」セクションの下で3人でコーディングを開始しました。別のシートを選択した後、3行目で停止したのはなぜですか?

私はセクションから人を削除しようとしましたが、コーディングはまだ機能しています。そのセクションの下に人をもう一人追加したとき、コーディングがうまくいかないことに気付きました。データを3人から4人に変更したところ、まだ3人目で停止していました。それは第4人を検出するためのループを継続しませんでした。

私がテストしたと私は

以降
Sheets("Cash").Select 

を始めたとき、それが機能しなかったことに気づきました。

これがなければ、ループはまだ機能し、第4人を検出できます。

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 

これを解決する方法はありますか?

EDIT:

があるためフォワードエドの啓発のため、私は私の問題への答えを見つけました。ありがとうございました。

私が編集したコードの小さなスニペットで次のコード

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

"キャッシュ"シート上でやっていることをやった後、あなたのシートを持ってシートに戻ってくる必要があります。あるいは実際にそれを選択せず​​に現金シートを操作するほうがよいでしょう。 –

+0

'Do While Cells(CashRowName、1)'ループが "Shift Roster"シートセルで動作するようになっていますか? – user3598756

+0

はい、単なるシート(「現金」)を追加するだけです – stupidgal

答えて

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 

を使用。私は構文がオフであることを確信しています。要点は、ループの途中でワークシートを変更することを避けることです。また、selectを繰り返し使うとコードが遅くなるので、避けてください。

関連する問題