2016-08-31 180 views
0

如何在一列填充0單元格的空單元格?我想我的代碼是完整的,但不能正常工作;(VBA - 用0填充空單元格

Sub test() 

Dim cell As Range 

For Each cell In Range("B2307:B10000") 
If Len(cell.Value) = 0 Then 
    cell.Value = 0 
End If 
Next 

End Sub 
+3

你真的需要VBA嗎? – pnuts

+0

@pnuts很好,你知道,有時你想自動化的東西... –

回答

2

試試這個:

Sub test() 

Dim cell As Range 

For Each cell In Range("B2307:B10000") 
If Trim(cell.Value) = "" Then 
    cell.Value = 0 
End If 
Next cell 

End Sub 
+0

我不認爲這種劣勢(從性能角度來看)解決方案應得票。順便說一句。 IsEmpty(cell.Value)也是一個很好用的函數。 :) –

+0

是的,我知道,但我只是想在OP的代碼中做最少量的更改我是懶惰的:p – newguy

0
Sub test() 
    Dim cell As Range 
    For Each cell In Range("B2307:B10000").Cells 
     If Len(cell.Value) = 0 Then 
      cell.Value = "0" 
     End If 
    Next 
End Sub 
+1

請編輯更多信息。僅限代碼和「嘗試這個」的答案是不鼓勵的,因爲它們不包含可搜索的內容,也不解釋爲什麼有人應該「嘗試這個」。 – abarisone

2

沒有VBA:

Goto Special, Blanks 
type '0' 
Ctrl+Enter 
+0

問題是關於VBA。 –

+0

可能想從'選擇B2307:B10000'開始,但肯定是我的首選方法! – pnuts

5

如果你真的需要VBA爲此,在這裏是更好的方法

Sub test() 

    On Error Resume Next 
    Range("B2307:B10000").SpecialCells(xlCellTypeBlanks) = 0 

End Sub 
0

儘管Rosetta的解決方案是這個非常特殊情況下最優雅的解決方案(空單元格),但我認爲以下方法是最通用的,因爲您可以通過更改公式來輕鬆地將其調整爲更多情況。

set rng = Range("B2307:B10000") 
rng.Formula = Application.Evaluate("=IF(ISBLANK(" & rng.Address & "),0," & rng.Address & ")") 

請記住這個模式,這非常有用!

相關問題