我的主要資料條目是一個名為“Master”的作業表。我想在輸入單詞時檢查范圍 A2:A1000。如果它是“CBI”、“Fire”、“InCase”或“LEA”,則在第一列 (Offset(0, 8)) 中不需要發生任何事情,因為它已經沒有填充(Interior.ColorIndex = -4142)。但是,如果在范圍 A2:A1000 中輸入任何其他單詞,則第 I 列(偏移量(0, 8))將更改為不同的顏色(Interior.Color = RGB(255, 231, 255))。我選擇了帶有“作業表”和“更改”的離散作業表,但無法使相交起作用。我知道代碼是重復的……我想使用多個引數,例如“CBI”、“Fire”、“InCase”、“LEA”……但它在 firstIf Target 行崩潰。或者,選擇案例引數可能更好。我已經查看了我的搜索“在單元格更改時運行 vba”的計算器結果,并嘗試修改但沒有成功。我還在單獨的模塊中嘗試了幾次編碼嘗試,其中我的其他 Subs 運行良好,但對此提供幫助將不勝感激。
Private Sub Worksheet_Change(ByVal Target As Range)
'Change interior color in Offset cell if certain words not entered in Range A2:A1000
If Not Intersect(Target, Range("A2:A1000")) Is Nothing Then
If Target(Range("A2:A1000"), "CBI") > 0 Then
ActiveCell.Offset(0, 8).Interior.ColorIndex = -4142
Else
If Target(Range("A2:A1000"), "Fire") > 0 Then
ActiveCell.Offset(0, 8).Interior.ColorIndex = -4142
Else
If Target(Range("A2:A1000"), "InCase") > 0 Then
ActiveCell.Offset(0, 8).Interior.ColorIndex = -4142
Else
If Target(Range("A2:A1000"), "LEA") > 0 Then
ActiveCell.Offset(0, 8).Interior.ColorIndex = -4142
Else
ActiveCell.Offset(0, 8).Interior.Color = RGB(255, 231, 255)
End If
End If
End Sub
uj5u.com熱心網友回復:
根據另一個單元格的值調整顏色
- 這將
I根據column 中手動輸入的值(不是通過公式)調整 column 中單元格的顏色A。如果列A不包含串列中的值,則列的同一行中的單元格I將被著色。 - 如果您已經在 column 中有值
A,您可以簡單地選擇它們并執行“復制/粘貼”,并且列中的顏色I將被更新。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const sCriteriaList As String = "CBI,Fire,InCase,LEA"
Const sfCellAddress As String = "A2"
Const dCol As String = "I"
Dim diColor As Long: diColor = RGB(255, 231, 255)
Dim sfCell As Range: Set sfCell = Range(sfCellAddress)
Dim scrg As Range: Set scrg = sfCell.Resize(Rows.Count - sfCell.Row 1)
Dim srg As Range: Set srg = Intersect(scrg, Target)
If srg Is Nothing Then Exit Sub
Dim sCriteria() As String: sCriteria = Split(sCriteriaList, ",")
Dim drg As Range: Set drg = Intersect(srg.EntireRow, Columns(dCol))
Dim durg As Range
Dim r As Long
For r = 1 To srg.Cells.Count
If IsError(Application.Match(CStr(srg.Cells(r)), sCriteria, 0)) Then
If durg Is Nothing Then
Set durg = drg.Cells(r)
Else
Set durg = Union(durg, drg.Cells(r))
End If
End If
Next r
drg.Interior.Color = xlNone
If Not durg Is Nothing Then
durg.Interior.Color = diColor
End If
End Sub
uj5u.com熱心網友回復:
這可以很容易地完成,使用條件格式。我創建了以下規則:
=AND(A2<>"CBI",A2<>"Fire",A2<>"InCase",A2<>"LEA")
并將其應用于我的“B”列,正如您在此螢屏截圖中所見:

這是結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/391134.html
上一篇:物件變數或未設定用于復制的變數
