2011-08-12 103 views
-1

尋找能夠檢查單元格是否爲空的編碼。如果不是空的,則移至下一個單元組。但我需要檢查下一個單元組是否爲空。如果不是,則轉到下一個等等。如何檢查單元格是否爲空?

我目前的編碼如下。

If IsEmpty(ActiveSheet.Range("h3")) Then 
    Do 
    Checkbox1.Value = True 
    Range("H3") = 17002 
    Sheets("Sheet1").Range("I3") = Printerformat2.Text 
Else 
    Checkbox1.Value = True 
    Range("l3") = 17002 
    Sheets("Sheet1").Range("m3") = Printerformat2.Text 
End If 
+0

可能會在細胞有公式? –

+0

該代碼無法編譯。 '不''循環'。 –

回答

1

你需要使用一個for循環中的 「H」

Dim i As Long 
With ActiveSheet 
    For i = 1 to 500 

    If IsEmpty(.Range("h" & CStr(i)).Value) Then 
    'Do 'Not sure where you're going with this one? This is not really needed from what I can tell. 
    Checkbox1.Value = True 
    .Range("H" & CStr(i)).Value = 17002 
    Sheets("Sheet1").Range("I" & CStr(i)).Value = Printerformat2.Text 
    Else 
     Checkbox1.Value = True 
     .Range("l" & CStr(i)) = 17002 
     Sheets("Sheet1").Range("m" & CStr(i)).value = Printerformat2.Text 
    End If 

    Next 
End With 

希望幫助在指定的範圍來迭代?

+2

+1,但通過使用字符串連接來構建單元格地址,您正在破壞自己。 –

+0

你會建議什麼方法呢?我通常使用「細胞」,例如:'私人枚舉列 僱員= 1個 部= 2 管理器= 3 結束枚舉 專用功能getCellByString(列如列,行作爲龍)作爲字符串 隨着工作表Sheet getCellByString = CStr的(.Cells(行,列)) 尾隨着 端功能 公用Sub GetDetails() MSGBOX getCellByString(經理,2) 結束小組 ' –

0

確保單元格不爲空的最優化方法是「如果L​​en(單元格)<> 0」。

您可以使用.offset從當前單元格訪問與其位置相關的另一個單元格,或者直接引用它,以便檢查它是否爲空。

1

我想你應該看看Range("your range").specialcells(xlCellTypeBlanks)。這是通過空單元循環的最快方式。
如果您需要循環播放非空白單元格,則可以檢查您的單元格Intersect是否爲空單元格範圍。

0

使用

Application.WorksheetFunction.isblank(ActiveSheet.range("h3")) 

,而不是

IsEmpty(ActiveSheet.Range("h3")) 

親切

+0

爲什麼?對我來說,它似乎不工作,'isblank' – Dolanor

相關問題