2015-10-06 42 views
0

這裏是我的代碼:環路和檢查,看是否有細胞是空白 - 不註冊一個單元格爲空

For Each Cell In NewBook.Sheets(1).Range("T2:T" & lastRow) 
If Cell.Value = 76 Or Cell.Value = 69 Then 
    MsgBox Cells(Cell.Row, 8).Value 
    If NewBook.Sheets(1).Cells(Cell.Row, 8).Value = "" Then 
      Do Until IsEmpty(NewBook.Sheets(1).Cells(Cell.Row, col).Value) 
       If Not NewBook.Sheets(1).Cells(Cell.Row, col).Value = "" Then 
       col = col + 1 
       End If 
      Loop 
      NewBook.Sheets(1).Cells(Cell.Row, col) = "Codes 69 or 76 Reported w/ No applicable Bankrupcty Rptd" 
    End If 
End If 
col = 50 
Next Cell 

我也試過:

For Each Cell In NewBook.Sheets(1).Range("T2:T" & lastRow) 
If Cell.Value = 76 Or Cell.Value = 69 Then 
    MsgBox Cells(Cell.Row, 8).Value 
    If IsEmpty(NewBook.Sheets(1).Cells(Cell.Row, 8).Value) = True Then 
      Do Until IsEmpty(NewBook.Sheets(1).Cells(Cell.Row, col).Value) 
       If Not NewBook.Sheets(1).Cells(Cell.Row, col).Value = "" Then 
       col = col + 1 
       End If 
      Loop 
      NewBook.Sheets(1).Cells(Cell.Row, col) = "Codes 69 or 76 Reported w/ No applicable Bankrupcty Rptd" 
    End If 
End If 
col = 50 
Next Cell 

兩者都不當cells(cell.row, 8).value確實是「」時註冊。不知道該怎麼辦。

+1

首先 - 你應該調試你的代碼,找出發生了什麼問題。有可能是完全不同的錯誤,你在其他地方尋找它。 – GSazheniuk

+1

從不建議在cell =「」之前執行Do While循環。這種類型的編程幾乎總是容易出錯,而且與替代方法相比效率低下,比如我可以看到您在代碼中使用的For Each循環。根據您的Do Loop實際執行的操作,看起來您需要該行中第一個未使用的列。爲什麼不使用'NewBook.Sheets(1).Cells(Cell.Row,Columns.Count).End(xlToLeft).Column + 1'?作爲一個方面說明,也不建議使用'cell'作爲變量,因爲它已經是VBA中的一個關鍵字。 – tigeravatar

+0

喜歡這些建議。即使這個錯誤已經解決,你們就繼續向我提供一些指示。對此,我真的非常感激。 –

回答

1

它可能與您的Cell變量有關。強烈建議不要將該單詞用作變量,因爲它在VB中使用。此外,使用With削減了幾分長度:

For Each cel In NewBook.Sheets(1).Range("T2:T" & lastRow) 
If cel.Value = 76 Or cel.Value = 69 Then 
    MsgBox Cells(cel.Row, 8).Value 
    With NewBook.Sheets(1) 
    If IsEmpty(.Cells(cel.Row, 8).Value) = True Then 
      Do Until IsEmpty(.Cells(cel.Row, col).Value) 
       If Not .Cells(cel.Row, col).Value = "" Then 
       col = col + 1 
       End If 
      Loop 
      .Cells(cel.Row, col) = "Codes 69 or 76 Reported w/ No applicable Bankrupcty Rptd" 
    End If 
    End With 
End If 
col = 50 
Next cel 

End Sub 

主要是,試着改變你的Cell變量只是cel(或任何你喜歡的),看看它是否工作。 With部分只是個人喜好。

1

問題在於原始數據。它來自CSV文件,cell.value不是「」。它是 」 」。 Pesky空間。

+1

啊,你走了!但是我會注意到我關於使用'Cell'作爲變量的評論......使用該變量會引起混淆。 – BruceWayne