2017-02-20 32 views
0

我遇到以下代码的问题。我希望它遍历一个范围(AK2直到数据结束),然后任何时候它发现一个空单元格,它将其值更改为应收帐款。它没有这样做,我也没有得到任何错误通知。我的猜测是,我在设置变量时做了一些错误:遍历范围并找到空单元格

Option Explicit 

Private Sub Leere() 

Dim rng As range 
Dim rcell As range 
Dim WS As Worksheet 

Set WS = Worksheets("Sheet2") 

Set rng = WS.range("AK2", range("AK2").End(xlDown)) 

For Each rcell In rng 
    If rcell.Value = " " Then 
      rcell.Value = "Accounts Receivable" 
    End If 
Next 
End Sub 

任何想法?

+2

找到一个空白做.value =“”而不是.value =“”(拿出空间) – Zerk

+0

哇,这只是!谢谢 – Urumita

+0

它将如何与isempty(rcell)一起使用? – Urumita

回答

2

使用SpecialCells()

With ws 
    .Range("AK2", .Cells(.Rows.Count, "AK").End(xlUp)).SpecialCells(XlCellType.xlCellTypeBlanks).Value = "Accounts Receivable" 
End With 
+1

作为其他人的注意事项,如果没有找到单元格但是可选的“On Error Resume Next”可用于忽略这些情况,则'SpecialCells'导致错误 – Slai

+0

@Slai,很好。谢谢 – user3598756

+0

@Urumita,你通过了吗? – user3598756

0

您应该能够像这样的东西来代替空(无公式)细胞:

Set ws = ThisWorkbook.Worksheets("Sheet2") 

Set rng = ws.Range("AK2", ws.Cells(ws.Rows.Count, "AK").End(xlUp)) 

rng.Replace "", "Accounts Receivable", xlWhole 

另一个非VBA选项可能条件格式的空白单元格。单元格值将仍然为空,但显示的文本更改将为动态。

相关问题