如何获得红色单元格的值?

时间:2017-01-06 16:24:58

标签: vba excel-vba excel

我有一个非常简单的脚本循环遍历所有单元格并检查它们是否为红色。如果任何单元格是红色的,我想捕获单元格的值,无论它是什么行和ColumnB。出于某种原因,我的下面的代码将找到正确的红色单元格,但它不会捕获单元格的值。我必须在这里遗漏一些简单的东西,但我不知道它是什么。

基本上,' ValueRed'总是""。

For i = 1 To R.Rows.Count
    For j = 1 To R.Columns.Count
         If Cells(i, 2).Interior.ColorIndex = 3 Then
             Set ValueRed = Cells(i, 2)
             finalsetred = "Delete: " & ValueRed
         End If
    Next
Next

我非常感谢你提供一些帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

ValueRed的数据类型是什么?

如果其字符串仅使用ValueRed = Cells(i, 2),请删除Set

对象需要

Set

For i = 1 To R.Rows.Count
    For j = 1 To R.Columns.Count
         If Cells(i, 2).Interior.ColorIndex = 3 Then
             ValueRed = Cells(i, 2)
             finalsetred = "Delete: " & ValueRed
         End If
    Next
Next

答案 1 :(得分:2)

不太清楚你在这之后会发生什么。 您想要检查所有单元格,如果它们是红色的,那么将该行中的B列单元格的值设置为“删除:”&红细胞值?

此代码可以工作(假设每行最多一个红色单元格:)

For i = 1 To R.Rows.Count
    For j = 1 To R.Columns.Count
         If Cells(i, j).Interior.ColorIndex = 3 Then
             Cells(i, 2) = "Delete: " & cells(i,j)
         End If
    Next
Next

虽然为了更加强大,但我希望每行有多个红色。

Dim strReds As String
For i = 1 To R.Rows.Count
    strReds = vbNullString
    For j = 1 To R.Columns.Count
        If Cells(i, j).Interior.ColorIndex = 3 Then
            If strReds = vbNullString Then
                strReds = "Delete: " & Cells(i, j)
            Else
                strReds = strReds & ", " & Cells(i, j)
            End If
        End If
    Next
    Cells(i, 2) = strReds
Next