根据另一张纸的值更改单元格的颜色?

时间:2017-10-14 22:43:55

标签: excel vba excel-vba casting

我试图根据另一张纸上的值来改变单元格的颜色

Sub ColoredOutlier()

    Dim i As Integer, j As Integer, x As Integer

    For i = 1 To 50

        For j = 2 To 23

            If IsEmpty(Worksheets("outlier_index").Cells(i, j)) Then Exit For

            x = Worksheets("outlier_index").Cells(i, j).Value

            Worksheets("Sheet2").Cells(x+1, i).Interior.ColorIndex = 3  

        Next j   

   Next i  

End Sub

当我运行上面这些代码时,由于

而出现“类型不匹配”错误
  

x =工作表(“outlier_index”)。单元格(i,j).Value

有人可以帮我解决问题吗?

2 个答案:

答案 0 :(得分:1)

X应该是一个字符串。单元格中的值将存储为String。 x不应该在这里使用。

Worksheets("Sheet2").Cells(i, x).Interior.ColorIndex = 3

应该是

Worksheets("Sheet2").Cells(i, j).Interior.ColorIndex = 3

所有在一起:

Sub ColoredOutlier()
Dim i As Integer, j As Integer, x As String

For i = 1 To 50

    For j = 2 To 23

        If IsEmpty(Worksheets("outlier_index").Cells(i, j)) Then Exit For

        x = Worksheets("outlier_index").Cells(i, j).Value
        Worksheets("Sheet2").Cells(i, j).Interior.ColorIndex = 3

    Next j

Next i

End Sub

答案 1 :(得分:1)

如上所述,当单元格的值不是整数时,可能会发生类型不匹配错误。

您可以轻松修改代码以跳过包含字符串的单元格:

If IsEmpty(Worksheets("outlier_index").Cells(i, j)) Or Not _ 
IsNumeric(Worksheets("outlier_index").Cells(i, j)) Then Exit For

如果工作表中也有非整数数字,则可能需要进一步修改它。