VBA文本框';s更改会影响第二个文本框,反之亦然
在我的表格上我有更多的文本框,但其中有两个是特别的。它是名为VBA文本框';s更改会影响第二个文本框,反之亦然,vba,textbox,Vba,Textbox,在我的表格上我有更多的文本框,但其中有两个是特别的。它是名为tbVolume的文本框和名为tbWeight的文本框 如果我更改tbVolume,则通过其他参数计算tbWeight的值,但当我将相同的过程添加到tbWeight(计算tbVolume的值)时,它会创建某种循环链接,因为体积的更改会更改重量,重量的更改会更改体积,等等 是否存在tbVolume\u Changed()/tbWeight\u Changed()的一些参数,这些参数可以告诉程序值是由用户还是由应用程序更改的 或者,您是否有
tbVolume
的文本框和名为tbWeight
的文本框
如果我更改tbVolume
,则通过其他参数计算tbWeight
的值,但当我将相同的过程添加到tbWeight
(计算tbVolume
的值)时,它会创建某种循环链接,因为体积的更改会更改重量,重量的更改会更改体积,等等
是否存在tbVolume\u Changed()
/tbWeight\u Changed()
的一些参数,这些参数可以告诉程序值是由用户还是由应用程序更改的
或者,您是否有其他解决此双文本框问题的方法?您可以使用以下方法代替
tbWeight\u Change()
或tb\u Volume\u 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
更改文本框的值,通过选项卡或鼠标单击退出文本框,文本框的其他值将更改
如果在文本框中写入时需要并行输出,则可以使用额外的文本框仅用于显示计算值。而不是
tbWeight\u Change()
或tb\u Volume\u 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
更改文本框的值,通过选项卡或鼠标单击退出文本框,文本框的其他值将更改
如果在文本框中写入时需要并行输出,则可以使用额外的文本框来显示计算值。Oh。。最后很简单,只有两个新的布尔值,一切正常:
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
而且效果很好:-)哦。。最后很简单,只有两个新的布尔值,一切正常:
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
它工作正常:-)试试:
AfterUpdate
…@fuseldieb我测试了AfterUpdate
-在我的情况下效果是一样的。:)试试:AfterUpdate
…@fuseldieb我测试了AfterUpdate
-对我来说效果一样。:)