[英]Changing cell color when value is in cell
在我的主表中,有一列(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
大概是這樣的:
范圍內的每個單元格:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range: Set c = Union(Range("D7:D446"), Range("F7:F446"))
Dim CellF As Range, CellD As Range, Cell As Range
If Not Application.Intersect(c, Range(Target.Address)) _
Is Nothing Then
For Each Cell In c
Set CellF = Range("F" & Cell.Row)
Set CellD = Range("D" & Cell.Row)
If CellF.Value <> "" Then
CellF.Interior.ColorIndex = 0
Else
Select Case CellD.Value
Case "1000", "1000MN", "19FET", "20IDU", "20ONC", "20RT", "20DV", "20SPPR", "22DC", "22LF", "22ME", "530H", "60UBL", "74G1", "74GA", "74A9", "78RV"
CellF.Interior.ColorIndex = 3
Case Else
CellF.Interior.ColorIndex = 0
End Select
End If
Next Cell
End If
End Sub
唯一更改的單元格:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range: Set c = Union(Range("D7:D446"), Range("F7:F446"))
Dim CellF As Range, CellD As Range, Cell As Range
If Not Application.Intersect(c, Range(Target.Address)) _
Is Nothing Then
Set CellF = Range("F" & Target.Row)
Set CellD = Range("D" & Target.Row)
If CellF.Value <> "" Then
CellF.Interior.ColorIndex = 0
Else
Select Case CellD.Value
Case "1000", "1000MN", "19FET", "20IDU", "20ONC", "20RT", "20DV", "20SPPR", "22DC", "22LF", "22ME", "530H", "60UBL", "74G1", "74GA", "74A9", "78RV"
CellF.Interior.ColorIndex = 3
Case Else
CellF.Interior.ColorIndex = 0
End Select
End If
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.