我在查找如何根据两列中的值更正事件时找到了attached。我不是程序员,所以当我将两种不同的解决方案结合在一起时,我可能会对代码进行屠杀。
现在,它正如我想要的那样工作。更改偏移单元格值会强制Excel将目标值替换为我指定的值。我想要实现(并且不确定是否可能),是反转代码。基本上,如果以相反的顺序输入值,我想更改偏移单元格。如果用户在A列中输入“Bravo”,然后在C列中输入“Gamma”,则代码会将单元格值更改为“Beta”。
我想要实现的是,如果用户在第A列中输入“Bravo”,那么Excel仍会看到这些单元格的组合并仍然用“Beta”替换该值。我知道这是附加代码,但是当目标单元格不是要更新的值时,我找不到任何支持替换单元格的东西。
提前致谢!
Dim oldCellAddress As String
Dim oldCellValue As String
Private Sub Worksheet_Change(ByVal Target As Range)
oldCellValue = "Bravo"
If Target = "Bravo" And Target.Offset(0, -2) = "Gamma" Then
Target.Value = "Beta"
Application.EnableEvents = True
End If
End Sub
答案 0 :(得分:0)
有两种可能的情况如下......
情景1:
如果工作表上的ANY CELL
发生了更改,则以下代码将检查column A
中C
和corresponding row
的内容,并更改{{1}的内容}}
Target Cell
情景1:
如果Private Sub Worksheet_Change(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
Dim r As Long
r = Target.Row
On Error GoTo Skip:
Application.EnableEvents = False
If Cells(r, "A") = "Bravo" And Cells(r, "C") = "Gamma" Then
Target.Value = "Beta"
End If
Skip:
Application.EnableEvents = True
End Sub
发生了更改,则会触发更改事件并检查a cell in column D
中column A
和C
中的内容并更改corresponding row
。
Target Cell in Column D
答案 1 :(得分:0)
这可能符合您的需求:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim colnum As Long, v As Variant
colnum = Target.Column
v = Target.Value
If colnum = 1 Then
If v = "Bravo" And Target.Offset(0, 2) = "Gamma" Then
Application.EnableEvents = False
Target.Value = "Beta"
Application.EnableEvents = True
End If
Exit Sub
End If
If colnum = 3 And v = "Gamma" And Target.Offset(0, -2) = "Bravo" Then
Application.EnableEvents = False
Target.Offset(0, -2).Value = "Beta"
Application.EnableEvents = True
End If
End Sub
例如,如果用户将 Bravo 放在单元格 A1 并且 C1 已包含 Gamma ,则代码放入 A1 中的 Beta (代码更正 A1 条目)。
如果用户将 Gamma 放入单元格 C1 ,单元格 A1 已包含 Bravo ,代码更正 A1 强>