1

在 Sheet1 中,我有一个单列,其中包含 1-20 行的填充单元格,其中包含常规数字。看下图:

在此处输入图像描述

在 Sheet2 中,我还有一列,单元格从 5-25 开始。如果我在这些单元格中输入一些值,则在 Sheet1 中,从具有相同值的单元格到“D”列的背景颜色会发生变化。看看下面的图片,看看它是如何工作的:

在此处输入图像描述在此处输入图像描述

我正在用这段代码来做:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 And Target.Row >= 5 Then
    If Target.Offset(0, 0).Text <> "" Then
    Dim n As Long
        For n = 5 To 25
            If Target.Offset(0, 0).Value = Worksheets("Sheet1").Range("A" & n).Value Then
                Worksheets("Sheet1").Range("A" & n & ":D" & n).Interior.ColorIndex = 3
            End If
        Next n
    End If
End If

End Sub

现在,我想在每次激活 Sheet1 时进行某种检查,以某种方式,如果Interior.ColorIndex = xlNoneRange("A1:A20") 中的所有单元格的单元格中没有值,如果某些单元格中有值Interior.ColorIndex = 3对于那些细胞。我正在考虑将这些值放入一个数组中,然后循环遍历它以比较值,但我是 VBA 新手,所以欢迎提供帮助。如果有更好的解决方案,只需提出来。

另外,如果我将值 12 替换为 17,则我想为一种情况编写一段代码,Interior.ColorIndex其中包含 12 的单元格转到xlNone和 17Interior.ColorIndex转到“ 3”。

所以,欢迎每一个建议。

4

1 回答 1

2

正如pnuts所说,不需要 VBA 。

使用颜色执行此操作的最简单方法是使用公式使用条件格式来检查一张纸上 A 列中单元格的值与您希望颜色更改并应用格式的行中的值。

看:

但是,如果您想要 VBA,那么您可以在工作簿和工作表事件处理程序中执行此操作。

工作表选择/激活:

在 Sheet1 上的 Excel 中,右键单击底部的工作表名称,然后单击查看代码。这将在 VB 编辑器中打开 Sheet1 的类模块。

在左侧代码模块的顶部,从下拉列表中选择Worksheet,然后在右侧下拉列表中单击激活事件处理程序。

这将创建一个空的子例程,每次选择 Sheet1 工作表时 Excel 都会执行该子例程。

在该代码中,您可以进行检查。

sheet2上的单元格更改:

要在每次对 sheet2 进行单元格更改时运行代码,您需要打开 sheet2 的类模块,从左侧的下拉列表中选择Worksheet ,然后为事件选择 Change

每次更改 sheet2 上的单元格时都会运行此代码,在这里,您将编写代码首先检查Target参数是否在您的范围内,如下所示:

If not Application.Intersect(Target, "A5:25") Then Exit Sub

接下来,您要编写代码以检查该值是否不再匹配,并重置颜色。

高温高压

菲利普

于 2013-05-23T13:26:06.827 回答