VBA文本框的更改会影响第二个文本框,反之亦然

时间:2016-10-19 09:51:01

标签: vba textbox

在我的表单上,我有更多的文本框,但其中两个是特殊的。它是名为tbVolume的文本框和名称为tbWeight的文本框。

如果我更改tbVolume,则其他参数是tbWeight的计算值,但是当我向tbWeight添加相同的过程(以计算tbVolume的值)时,创造某种循环联系,因为体积的变化会改变体重,改变体重变化等等......

是否存在tbVolume_Changed() / tbWeight_Changed()的某个参数,它可以告诉程序用户或应用程序是否更改了值?

或者您对如何解决这个双文本框问题有其他想法吗?

2 个答案:

答案 0 :(得分:2)

哦..最后它很容易,只有两个新的布尔值,一切正常:

Dim editingVolumeByApp As Boolean
Dim editingWeightByApp As Boolean

Private Sub tbVolume_Change()
  If editingVolumeByApp = False Then
    '...
    editingWeightByApp = True
    tbWeight.Value = finalVolume * CDbl(tbMatDensi.Value)
    editingWeightByApp = False
    '...
  End If
End Sub

Private Sub tbWeight_Change()
  If editingWeightByApp = False Then
    '...
    editingVolumeByApp = True
    tbVolume.Value = finalVolume * CDbl(tbMatComplCoef.Value)
    editingVolumeByApp = False
    '...
  End If
End Sub

它工作正常: - )

答案 1 :(得分:0)

您可以使用以下内容代替tbWeight_Change()tb_Volume_Change()

Private Sub tbWeight_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    ' do everything you want to do
End Sub

当然:

Private Sub tbVolume_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    ' do everything you want to do
End Sub

您更改文本框的值,通过制表符或鼠标单击退出,文本框的其他值将更改。

如果您想在文本框中书写时使用并行输出,则可以使用额外的文本框来显示计算值。