2017-06-01 88 views
2

我在Excel上工作,有兩張紙叫做「Releves」和「Observations」。我想根據Observations Sheets列中單元格的內容爲Releves表格中的一列着色。VBA Excel中每個循環的雙精度值

聲明將是這一個:

如果my_column_observations_sheet的細胞是不是空的,把一個黃色 顏色my_column_releves_sheet

我做了每個循環的雙重,但它不起作用。當我運行該腳本,所有的的細胞my_column_releves_sheet是有顏色的,即使my_column_observations_sheet是空...的細胞

這裏是我的腳本:

Sub condition() 

Dim espece As Range 
Dim num_releve As Range 

ThisWorkbook.Sheets("Relevé").Activate 
Set num_releve = ActiveSheet.Range("G3:G6") 

ThisWorkbook.Sheets("Observations").Activate 
Set espece = ActiveSheet.Range("B3:B6") 

    For Each i In espece 
     For Each j In num_releve 
     If Not IsNull(i.Value) Then j.Interior.ColorIndex = 6 
     Next 
    Next 
End Sub 
+0

這是因爲'ISNULL(任意單元格的值)'總是會無論該單元格中的內容是「假」。你的意思是檢查「IsEmpty」嗎? –

回答

1
For Each i In espece 
    For Each j In num_releve 
     If Not IsNull(i.Value) Then j.Interior.ColorIndex = 6 
    Next 
Next 

IsNull不能像這樣使用。空單元格值爲,而不是。使用IsEmpty代替:

For Each i In espece 
    For Each j In num_releve 
     If Not IsEmpty(i.Value) Then j.Interior.ColorIndex = 6 
    Next 
Next 

這將治療患有返回一個空字符串公式的單元格,作爲非空單元格。

如果你需要把空值細胞,然後檢查空字符串 - 但誤差值提防:

For Each i In espece 
    For Each j In num_releve 
     If Not IsError(i.Value) Then 
      If CStr(i.Value) <> vbNullString Then j.Interior.ColorIndex = 6 
     End If 
    Next 
Next 
+0

謝謝!但我有同樣的結果..即使關聯的單元格是空的,我所有的j單元格都是有顏色的。也許在每個循環的double中有問題? – Julien

+0

你還沒有澄清你想用'IsNull'做什麼。問題不是循環,而是它內部的條件。 –