我有两组文本框A,B和C,D。我必须手动输入A和B中的值,而后端的代码计算C = A /(A + B)和D = B /(A + B)。
如果我更改A和B中的值,则更新C和D中的值。
有没有办法反过来发生。
如果这不是重新计算功能相关的问题,我表示歉意。
再次感谢!
答案 0 :(得分:0)
我会创建一个处理逻辑的方法。您必须设置一个标记以防止重新触发计算。
Public StopCalculations As Boolean
Private Sub a_Change()
If Not StopCalculations Then UpdateValues a
End Sub
Private Sub b_Change()
If Not StopCalculations Then UpdateValues b
End Sub
Private Sub c_Change()
If Not StopCalculations Then UpdateValues c
End Sub
Private Sub d_Change()
If Not StopCalculations Then UpdateValues d
End Sub
Sub UpdateValues(txt As MSForms.TextBox)
StopCalculations = True
Select Case txt
Case a
b.value = a.value
Case b
b.value = c.value
Case c
Case d
End Select
StopCalculations = False
End Sub
您可以在工作簿名称集合中存储和检索隐藏值,如下所示:
Private Sub UserForm_Initialize()
a.value = getNameValue(a.Name)
b.value = getNameValue(b.Name)
c.value = getNameValue(c.Name)
d.value = getNameValue(d.Name)
Application.EnableEvents = False
End Sub
Private Sub UserForm_Terminate()
ThisWorkbook.Names.Add a.Name, a.Text, False
ThisWorkbook.Names.Add b.Name, b.Text, False
ThisWorkbook.Names.Add c.Name, c.Text, False
ThisWorkbook.Names.Add d.Name, d.Text, False
End Sub
Function getNameValue(value As String)
Dim s As String
On Error Resume Next
s = ThisWorkbook.Names(value).value
getNameValue = Right(s, Len(s) - 1)
On Error GoTo 0
End Function