我在寻找如何根据两列中的值进行事件更改以更正用户数据时找到了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
发布于 2018-01-11 18:00:03
这也许能满足你的需要:
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,则代码将Beta放置在A1中(代码更正A1条目)。
如果用户将Gamma放入已包含Bravo的cell C1和cell A1中,代码将更正A1。
发布于 2018-01-11 17:52:49
有两种可能的情况如下..。
场景1:
如果工作表上的ANY CELL
被更改,下面的代码将检查column A
和C
在corresponding row
中的内容,并更改Target Cell
的内容。
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
场景1:
如果更改了a cell in column D
,则会触发更改事件,并检查corresponding row
中的column A
和C
中的内容,并更改Target Cell in Column D
。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
Dim r As Long
On Error GoTo Skip:
'The below line ensures that the sheet change event will be triggered when a cell in colunm D is changed
'Change it as per your requirement.
If Not Intersect(Target, Range("D:D")) Is Nothing Then
Application.EnableEvents = False
r = Target.Row
If Cells(r, "A") = "Bravo" And Cells(r, "C") = "Gamma" Then
Target.Value = "Beta"
End If
End If
Skip:
Application.EnableEvents = True
End Sub
https://stackoverflow.com/questions/48218272
复制相似问题