循环并比较数组中的值

在Sheet1中,我有一个单列,填充单元格从1-20行与常规数字。 看下面的照片:

在这里输入图像说明

在Sheet2中,我也有一列,单元格从5-25开始。 如果我向这些单元格中input一些值,则在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时进行一些检查,如果在单元格中没有任何值,那么对于Range(“A1:A20”)中的所有单元格, Interior.ColorIndex = xlNone ,如果有一些单元格中的值Interior.ColorIndex = 3表示这些单元格。 我正在考虑把这些值放入一个数组,然后通过循环来比较值,但我是新来的VBA,所以帮助将是受欢迎的。 如果有更好的解决scheme,就把它打开。

另外,如果我用17代替12的值,包含12的单元格的Interior.ColorIndex变为xlNone ,17的值为17,则Interior.ColorIndex变为“ 3 ”,我想编一段代码。

所以,每个build议都是值得欢迎的。

不需要VBA,像pnuts所说的那样。

使用颜色完成此操作的最简单方法是使用“ 公式”的“ 条件格式”来检查一张表中列A中的单元格的值,并将其与希望更改颜色并应用格式的行中的值进行比较。

看到:

  • MSDN Office Online:使用公式来应用条件格式
  • Contextures.com:Excel条件格式 – 示例
  • 芯片培生Excel MVP:条件格式
  • J-Walk Mr Spreadsheet:Conditional Formatting

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

工作表select/激活:

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

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

这将创build一个空的子例程,每次您selectSheet1工作表时,都将由Excel执行。

在这个代码中,你可以做你的支票。

工作表2上的单元格更改:

要让代码在每次在sheet2上进行单元格更改时运行,您需要打开sheet2的类模块,从左侧的下拉列表中selectWorksheet ,然后selectChange for the event。

这个代码将会在你每次更改sheet2上的一个单元格的时候运行,并且在这里,你会编写代码来首先检查目标参数是否在你的范围内,如下所示:

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

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

HTH

菲利普