在我的主表中,我有一个列(列C),其中将输入长16位数的代码。下一列(D列)用公式“= MID(列C中的单元格,16,6”)得出该代码的最后6位数。如果较长代码的最后6位数等于我列出的任何代码Case
声明在代码中,F列中的相应单元格应该变成红色,以向用户指示列F中的单元格需要代码,一旦F列单元格变成红色,用户能够点击F中的该单元格列,并且它将用户带到另一个代码列表中,用户可以双击任何代码,并且将它填充到主表中的F列当单元格中的值改变单元格颜色
到目前为止,当代码填充F列,它变成了一个没有填充的背景(我想)但是,当我在相同行中的任何单元中输入任何其他数据时,F列中的单元格会变回红色,代码仍在单元格中。我需要F列中的单元格在输入数据后保留无填充背景,除非代码已从单元格中删除,然后它可以变回红色以向用户指示此单元格需要值。当代码仍在其中时,我不能让单元变红。我觉得自己好像有点接近,但我不太了解VBA语法,无法让这个功能正常工作。任何建议将不胜感激。
在此先感谢。 我将代码发布到下面的主片/形式:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range: Set c = Range("D7:D446")
Dim d As Range: Set d = Range("F7:F446")
For Each c In c.Cells
Select Case c.Value
Case "1000GP", "1000MM", "19FEST", "20IEDU", "20ONLC", "20PART", "20PRDV", "20SPPR", "22DANC", "22LFLC", "22MEDA", "530CCH", "60POUBL", "74GA01", "74GA17", "74GA99", "78REDV"
Cells(c.Row, "F").Interior.ColorIndex = 3
Case Else
Cells(c.Row, "F").Interior.ColorIndex = 0
End Select
Next c
If Not Application.Intersect(d, Range(Target.Address)) _
Is Nothing Then
Target.Interior.ColorIndex = 0
End If
End Sub
您的代码只在D列中的某些内容未更改时激活。 – UGP
@UGP非常感谢您的回答。这工作。当我选择一个代码时,它现在填充F列中的单元格,并将单元格变回为无填充颜色。但是,当我从F列的单元格中删除该代码时,我希望F单元格变回红色。截至目前,它只是在删除后保持不填充背景颜色。你会碰巧知道我该怎么做呢?再次感谢!非常感激。 – anve
我添加了一个简短的版本,你可能想看看。如果F中的值是“” – UGP