Excel 带有数据验证的工作表更改事件
单元格数据更改后,我的VBA将不运行。Excel 带有数据验证的工作表更改事件,excel,vba,validation,Excel,Vba,Validation,单元格数据更改后,我的VBA将不运行。 在我的工作表中,VBA在F列和G列中运行。 列G具有数据验证,我希望根据列F中输入的数值触发该验证 示例: F列的数值为2.5,这导致G列显示“良好状态”。 如果我将F列的值更改为2,则G列将显示“良好信誉” Private子工作表\u更改(ByVal目标作为范围) StrtRow=2 EndRow=范围(“F”和Rows.Count).End(xlUp).Row 对于i=StrtRow到EndRow 如果范围(“F”&i).值>=2,则 范围(“G”和i
在我的工作表中,VBA在F列和G列中运行。
列G具有数据验证,我希望根据列F中输入的数值触发该验证 示例:
F列的数值为2.5,这导致G列显示“良好状态”。
如果我将F列的值更改为<2,我希望G列单元格显示为空白
反之亦然,如果F列值最初小于2,并且我将其增加到>2,则G列将显示“良好信誉”
Private子工作表\u更改(ByVal目标作为范围)
StrtRow=2
EndRow=范围(“F”和Rows.Count).End(xlUp).Row
对于i=StrtRow到EndRow
如果范围(“F”&i).值>=2,则
范围(“G”和i)。值=“良好信誉”
如果结束
下一个
端接头
如果<2
,您缺少一个用于清除内容的Else
子句。考虑到@SJR的注释,请尝试此操作(未测试)
如果
<2
,您缺少一个Else
子句来清除内容。请考虑@SJR的注释,尝试此操作(未测试)
当前,每当任何单元格在任何位置发生更改时,您的代码将在F中的每个单元格中运行。您需要在代码中引用已更改的单元格
Target
。当前,每当任何单元格在任何位置发生更改时,您的代码将在F中的每个单元格中运行。您需要在代码中引用Target
,即cell已经更改。谢谢@supersymetry的评论。该代码似乎没有执行我需要的功能。一旦单元格发生更改,它仍然不会更新。很好@SJR。请按照指南将代码插入正确的模块中。好的,这就是问题所在。我在单独的模块中使用了该代码。我必须与Another一起玩我非常感谢您的反馈和对我问题的帮助!谢谢@superSymmetry的评论。该代码似乎没有执行我需要的功能。一旦单元格发生变化,它仍然不会更新。很好@SJR。请按照指南插入在正确的模块中编写代码。好的,这就是问题所在。我把它放在一个单独的模块中。我必须使用另一个代码来适应这个模块,并使它们都成功运行。我非常感谢您的反馈和帮助我解决我的问题!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngWatched As Range: Set rngWatched = Me.Range("F:F")
Dim cl As Range
If Not Intersect(rngWatched, Target) Is Nothing Then
Application.EnableEvents = False
For Each cl In Intersect(rngWatched, Target)
If cl.Value >= 2 Then
cl.Offset(0, 1).Value = "Good Standing"
Else
cl.Offset(0, 1).ClearContents
End If
Next
Application.EnableEvents = True
End If
End Sub