在我的表单上,我有更多的文本框,但其中两个是特殊的。它是名为tbVolume
的文本框和名称为tbWeight
的文本框。
如果我更改tbVolume
,则其他参数是tbWeight
的计算值,但是当我向tbWeight
添加相同的过程(以计算tbVolume
的值)时,创造某种循环联系,因为体积的变化会改变体重,改变体重变化等等......
是否存在tbVolume_Changed()
/ tbWeight_Changed()
的某个参数,它可以告诉程序用户或应用程序是否更改了值?
或者您对如何解决这个双文本框问题有其他想法吗?
答案 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
您更改文本框的值,通过制表符或鼠标单击退出,文本框的其他值将更改。
如果您想在文本框中书写时使用并行输出,则可以使用额外的文本框来显示计算值。