簡體   English   中英

VBA Excel-更改兩個單元格的值時,彼此更改

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM