[英]VBA excel - change two cell's values based on each other, when either cell is changed
我试图在Excel上创建货币转换器。
Cell B1 = exchange rate
cell B2 = base currency amount
cell B3 = counter currency amount.
例:
B1 = 1.3, B2 = Euro amount, B3 = USD amount.
所有三个单元通过公式B3 = B1*B2
相互连接。
我希望能够在B2
输入值,并且B3
自动更新自身(B3 = B2*B1)
当我在B3
输入值时, B2
更新自身(B2 = B3/B1)
。
下面的代码是我能提供的最好的代码,但是它会产生堆栈空间不足错误,因为( 我猜想,它会陷入无限循环(当B2
更新时, B3
更新自身,这反过来又会更新B2
.. )。
有什么建议吗?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim EUR As Range
Set EUR = Range("b2")
Dim USD As Range
Set USD = Range("b3")
If Not Application.Intersect(EUR, Range(Target.Address)) Is Nothing Then
Sheets("sheet1").Range("B3").Value = Range("B2") * Range("B1")
Else
If Not Application.Intersect(USD, Range(Target.Address)) Is Nothing Then
Sheets("sheet1").Range("B2").Value = Range("B3") / Range("B1")
End If
End If
End Sub
如果崩溃确实是由于无限循环引起的,则可以尝试在宏的开头禁用Excel事件,然后在结尾重新启用它们。
基于此帖子的摘要:
Application.EnableEvents = False
' Your code
Application.EnableEvents = True
像这样的东西会更容易阅读。 您可能需要尝试一下公式,因为我不是100%不确定您在做什么:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
Range("B3") = Range("B2") * Range("B1")
End If
If Target.Address = "$B$3" Then
Range("B2") = Range("B3") / Range("B1")
End If
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.