VBA excel - 当更改任一单元格时,相互更改两个单元格的值

时间:2013-01-22 07:14:50

标签: excel vba excel-vba

我试图在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更新时,{{ 1}}更新自身,然后再次更新B3 ... )。

有什么建议吗?

B2

2 个答案:

答案 0 :(得分:0)

如果崩溃确实是由于无限循环,您可以尝试在宏的开头禁用Excel事件,并在最后重新启用它们。

Snipplet,基于this post

Application.EnableEvents = False

' Your code

Application.EnableEvents = True

答案 1 :(得分:0)

这样的东西会更容易阅读。您可能需要使用公式,因为我不能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