当单元格更改时,VBA 例程跳转到另一个子例程,这不是“Worksheet_Change”例程

问题描述 投票:0回答:1

我打开了 2 个工作簿。工作簿 1 上有一个按钮,可触发子例程以打开第二个工作簿并将工作簿 1 中的一些数据输入到 WB2 中工作表的某些单元格中。 一切工作正常,直到我开始更改 WB2 中的单元格。程序跳转到另一个例程,该例程不是“Worksheet_Change”例程。我在“Worksheet_Change”例程开始时设置了一个中断,但它没有被命中。我还在更改 WB2 内容的例程开始处设置了 Application.EnableEvents = False。 在下面的代码中,“xpwb”是先前打开的工作簿 2,“guests”是活动的工作簿 1。一旦rent.Range("C1")被修改,程序就会直接跳转到函数“fetchPrice”,尽管它没有被调用。 一旦它运行了这个例程,它就会无限循环地重新启动它。

我摸不着头脑,这种行为不符合逻辑。 尽管事件已停用,但什么会导致程序调用不是 Worksheet_Change 例程的另一个子例程/函数? 知道我能做什么来阻止这种情况吗?

Set xpwb = Workbooks(xFile)
If Not xpwb Is Nothing Then
    Set rent = xpwb.Worksheets("rent")
    Set expense = xpwb.Worksheets("expense")
    Set dats = xpwb.Worksheets("data")
    Application.EnableEvents = False

    'col A=descriptions, col B=dates, col D= amount to pay/paid, col E=actual pay date,
    'col F=$$ left to pay, col G = months left to pay, col H= text, col I= next amount to pay
    With rent
        .Range("C1") = guest_name
        .Range("B2") = guests.Cells(r, start_date_c).Value2     'arrival date
        .Range("B3") = guests.Cells(r, end_date_c).Value2       'departure date
        .Range("B4") = .Range("B3") - .Range("B2")              'nights
        .Range("F4") = guests.Cells(r, total_c).Value2          'total amount to pay

更新1: 经过实验,我注释掉了整个函数“fetchPrice”,从而消除了代码,并且问题不再出现。当然,这不是真正的解决方案,因为我需要这个功能。

Update2:谢谢大家的帮助。我通过将函数从 fetchPrice 重命名为 getPrice 解决了这个问题,现在它可以工作了。 我可能永远不知道一开始出了什么问题。也许编译代码中存在隐藏错误。

excel vba onchange
1个回答
0
投票

经过多次实验,我通过将函数从 fetchPrice 重命名为 getPrice 解决了这个问题,现在它可以工作了。我可能永远不知道一开始出了什么问题。也许编译代码中存在隐藏错误。

感谢您的所有建议。它帮助我尝试不同的解决方案,这才是最重要的。

© www.soinside.com 2019 - 2024. All rights reserved.