首先,正如您可能从下面看到的那样,我的VBA技能非常有限!
我正在创建一个电子表格,我试图包括一些健全性检查.基本上,如果单元格G69大于零则表示已经购买了一个项目,因此单元格G68(定义已购买的项目类型)不能等于none,它必须是一个值(我强制它是'蛋').如果G69不大于零则没有买任何东西,所以G68应该被迫'无'.
同样,如果单元格G68设置为"无",则不会购买任何内容,因此G69应强制为零.
我拼凑的代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$69" Then
If Range("$G$69").Value > 0 Then
Range("$g$68").Value = "Eggs"
Else: Range("$g$68").Value = "None"
End If
End If
If Target.Address = "$G$68" Then
If Range("$G$68").Value = "None" Then
Range("$g$69").Value = 0
End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我在运行宏时一直遇到错误,我认为这是因为它创建了一个循环 - 我改变了G69的值,结果它改变了G68的值,这反过来触发了该单元格的if例程,因此它尝试将G69设置为值,依此类推......
谁能解释我做错了什么?我怀疑它很容易解决并且与我笨拙的编码有关!:)
希望有道理!非常感谢..
拍
小智 7
如果您不希望对VBA中的单元格进行更改以触发事件,则可以在更改之前禁用事件,并在更改之后重新启用事件.
Application.EnableEvents = False
' code here will not trigger events.
Application.EnableEvents = True
Run Code Online (Sandbox Code Playgroud)