这应该是一个简单的修复程序,但是我对VBA和编程领域还是陌生的。 这是我必须验证包含调查条目值的特定列的代码。 一些调查问题的价值可能性是相同的,我不想为每个问题都复制并粘贴相同的代码,然后更改列字母和数字。 我敢肯定有一个简单的方法可以做到这一点。

具体来说,我希望针对第一种情况到第AC列进行验证,如下所示。 我真的很想让这段代码尽可能简单。 非常感谢。

我喜欢我现在使用的方法,但是如果需要从头开始重新构建,那就这样吧。

Sub MyCheck()

Application.ScreenUpdating = False

Dim i As Integer
    For i = 2 To Range("I65536").End(xlUp).Row
        Select Case Cells(i, 9).Value
            Case "1", "2", "3", "4", "5", "88", "99"
                Cells(i, 9).Interior.ColorIndex = xlNone
            Case Else
               Cells(i, 9).Interior.ColorIndex = 6
        End Select
    Next i
    Application.ScreenUpdating = True

End Sub

===============>>#1 票数:1 已采纳

像这样?

Option Explicit

Sub MyCheck()
    Application.ScreenUpdating = False

    Dim i As Long, lRow As Long
    Dim ws As Worksheet
    Dim rng As Range, aCell As Range
    Dim ColLetter As String

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        '~~> From Col B to Col AC
        For i = 2 To 29
            ColLetter = Split(.Cells(, i).Address, "$")(1)

            '~~> Find the last row of the releavnt column
            lRow = .Range(ColLetter & .Rows.Count).End(xlUp).Row

            '~~> Set your range
            Set rng = .Range(ColLetter & "2:" & ColLetter & lRow)

            '~~> Remove all the color. Note we are not doing this
            '~~> in the loop
            rng.Interior.ColorIndex = xlNone

            For Each aCell In rng
                Select Case aCell.Value
                Case 1 To 5, 88, 89
                Case Else
                    aCell.Interior.ColorIndex = 6
                End Select
            Next
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

屏幕截图

在此处输入图片说明

  ask by MontasaurusWrex translate from so

未解决问题?本站智能推荐:

1回复

有没有一种方法可以基于工作表中的数据验证列表值生成IF语句?

在P列中,我有一个下拉列表,对于我创建的每个新工作表,要添加的代码如下所示。 在QI列中,希望基于用户从P列输入的特定值填充另一个下拉列表。 例如,如果用户在P列中选择“ No ,那么我只希望在Q列的那一行中填充value 1或value 2如果用户在P列中选择“ Yes ,则只希
1回复

有没有一种方法可以不使用内置的排序功能对列进行排序?

我非常希望VBA执行以下操作 1)剪切选定的行 2)按字母顺序将行插入正确的位置(基于col C) 我不能使用sort的原因是因为我对一个工作表有大量引用,而当我使用sort时,即使它们中都包含$,它也会弄乱所有引用。 我发现切割可以解决问题
2回复

有没有一种方法可以在VBA中使用if ...除非声明?

我当前正在执行以下代码。 现在,我想在最后一个“如果不是”之后加上一行,基本上是说“除非第6列中有单词'F-003'”。 如果那没有意义:我试图忽略任何包含“ Safe”的行,除非他们也说“ F-003”,然后再包含它。 有没有办法做到这一点?
2回复

有没有一种方法可以根据列号从excel工作表中选择特定的列?

我有一个具有数千列的excel工作表,我想选择其中的一些,每一个都有一个列号,有没有办法我可以选择满足特定条件的列? 例如编号为50、70、120、154、200的列。如何从具有2000列的Excel文件中选择它们? 有没有宏可以做到这一点? 谢谢
5回复

有没有一种简单的方法可以在Excel中没有CONCATENATE的情况下将列转换为文本?

我知道text-to-columns按钮。 可以通过选择列,可能运行宏或使用类似按钮来完成相反的操作吗?
1回复

需要找到一种方法来使此宏遍历其他所有列

我编写了一个宏,该宏基于对另外两个单元格的串联值的vlookup返回一个单元格中的特定值。 该宏可能需要每隔30列运行一次。 有没有一种方法可以循环执行此操作,从而不必键入30种变化? 这是我引用的代码部分: 提前致谢! 编辑:终于使它工作。 我最终得到的是:
1回复

有没有一种方法可以仅对Excel数据透视表中的选定列进行排序?

由于值的性质,我想锁定前三列,但是当我水平排序时,不需要排序的列最终出现在图表的中间。 有没有解决的办法? 谢谢。
1回复

使用替换方法在Excel VBA中输入长数组公式的一种解决方法

我试图通过VBA输入数组公式时避免255个字符的限制。 我在网上查看,发现了一种很有前途的解决方案,可以将阵列分成几部分,然后再次组合。 但是,我的.replace函数没有替换任何东西。 我非常小心地确保在.replace的每个阶段中,得出的公式都是合理的。 这是我到目前为止
1回复

使用VBA对整个列进行下拉验证

我是VBA的新手,正在尝试对整个列中的数据进行数据验证。 使用以下代码执行此操作。 使用此代码,我能够为所选列中的每个单元格下拉列表,但是下拉列表中的值将在每个对应的单元格中逐一删除。 例如,如果在列表中,我的值是[1,2,3,4,5]。 在第一个单元格下拉列表中,我可以选择[1,
1回复

如何使用VBA将验证应用于每列

我有工作表超过100列中的数据。 在sheet2中,我为每一列提供了验证公式(正则表达式)。 我想通过在将数据粘贴到sheet3之前检查每一列的验证公式来将数据从sheet1复制到sheet3。 如果满足公式,则将其复制到sheet3中并用绿色填充该单元格;如果不满足,则将数据复制到she