VBA Excel中每个循环的双精度

VBA Excel中每个循环的双精度,vba,excel,Vba,Excel,我在Excel上工作,有两张叫做“Releves”和“Observations”的表格。我想根据观察表列单元格的内容为Releves表列着色 声明如下: 如果my_column_observations_工作表中的单元格不为空,请输入黄色 “我的”列中的颜色“发布”表 我为每个循环做了一个双循环,但它不起作用。当我运行脚本时,“我的”列“发布”表的所有单元格都是彩色的,即使“我的”列“观察”表的单元格是空的 这是我的剧本: Sub condition() Dim espece As Range

我在Excel上工作,有两张叫做“Releves”和“Observations”的表格。我想根据观察表列单元格的内容为Releves表列着色

声明如下:

如果my_column_observations_工作表中的单元格不为空,请输入黄色 “我的”列中的颜色“发布”表

我为每个循环做了一个双循环,但它不起作用。当我运行脚本时,“我的”列“发布”表的所有单元格都是彩色的,即使“我的”列“观察”表的单元格是空的

这是我的剧本:

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
IsNull
不能这样使用。空单元格值为空,不为null。改用
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
针对每个i,特别是
对于每个j,在num_relve中
如果不是IsError(i.值),则
如果CStr(i.Value)vbNullString,则j.Interior.ColorIndex=6
如果结束
下一个
下一个

这是因为
IsNull(任何单元格值)
总是
False
无论该单元格中有什么内容。您的意思是检查
是否有空
?谢谢!但是我有同样的结果。。即使关联的单元格i为空,我的所有j单元格都是彩色的。。可能每个循环的double中都有问题?您还没有明确说明如何使用
IsNull
。问题不在于循环,而在于循环内部的条件。
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