VBA Excel中每个循环的双重

时间:2017-06-01 15:08:08

标签: vba excel-vba excel

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

声明就是这个声明:

  

如果 my_column_observations_sheet 的单元格不为空,则为黄色    my_column_releves_sheet 中的颜色。

我为每个循环制作了一个双重但它不起作用。当我运行脚本时,即使 my_column_observations_sheet 的单元格为空, my_column_releves_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

1 个答案:

答案 0 :(得分: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无法像这样使用。空单元格值为空,而不是 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