首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Excel中更新非目标单元格的值

在Excel中更新非目标单元格的值
EN

Stack Overflow用户
提问于 2018-01-12 01:24:46
回答 2查看 670关注 0票数 0

我在寻找如何根据两列中的值进行事件更改以更正用户数据时找到了attached。我不是一个程序员,所以当我将两种不同的解决方案组合在一起时,我可能已经将代码屠杀了。

现在,它就像我想要的那样工作。更改偏移量单元格值会迫使Excel用我指定的值替换目标值。我想要实现的(我不确定是可能的)是反转代码。基本上,如果值是按相反顺序输入的,我想要更改偏移量单元格。如果用户在A列中输入"Bravo“,然后在C列中输入"Gamma”,则代码将将单元格值更改为"Beta“。

我想要实现的是,如果用户在第A秒栏中输入"Bravo“,Excel仍然可以看到这些单元格的组合,并将值替换为"Beta”。我知道这是额外的代码,但是当目标单元格不是要更新的值时,我找不到支持替换单元格的任何东西。

提前感谢!

代码语言:javascript
代码运行次数:0
运行
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-12 02:00:03

这也许能满足你的需要:

代码语言:javascript
代码运行次数: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放入单元格A1C1中已经包含了Gamma,则代码将Beta放置在A1中(代码更正A1条目)。

如果用户将Gamma放入已包含Bravo的cell C1和cell A1中,代码将更正A1

票数 0
EN

Stack Overflow用户

发布于 2018-01-12 01:52:49

有两种可能的情况如下..。

场景1:

如果工作表上的ANY CELL被更改,下面的代码将检查column ACcorresponding row中的内容,并更改Target Cell的内容。

代码语言:javascript
代码运行次数:0
运行
复制
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 AC中的内容,并更改Target Cell in Column D

代码语言:javascript
代码运行次数:0
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48218272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档