Excel 更改两个相互关联的文本框的事件代码

Excel 更改两个相互关联的文本框的事件代码,excel,vba,Excel,Vba,我使用一个带有3个文本框的用户表单。 用于输入数值(LP)的TestBox1。 TextBox2用于按百分比输入折扣,TextBox3用于显示折扣值。 现在,如果用户在TextBox3中输入折扣值,我想获得百分比折扣。 我已尝试更改事件,但两个文本框值都在更改 Option Explicit Dim Lp As Double Dim Perc As Double Private Sub Calculate() Lp = CDbl(TextBox1.Value) Perc = CDbl(Tex

我使用一个带有3个文本框的用户表单。 用于输入数值(LP)的TestBox1。 TextBox2用于按百分比输入折扣,TextBox3用于显示折扣值。 现在,如果用户在TextBox3中输入折扣值,我想获得百分比折扣。 我已尝试更改事件,但两个文本框值都在更改

Option Explicit

Dim Lp As Double
Dim Perc As Double

Private Sub Calculate()
Lp = CDbl(TextBox1.Value)
Perc = CDbl(TextBox2.Value)
TextBox3.Value = Lp - Lp * Perc / 100
End Sub

Private Sub TextBox2_Change()

TextBox2.Value = Lp - Lp * CDbl(TextBox1.Value) / 100
End Sub

Private Sub TextBox3_Change()
TextBox2.Value = (Lp - TextBox2.Value) * 100 / Lp
End Sub

Private Sub CommandButton1_Click()
Call Calculate
End Sub

只需使用一个计算过程,并在文本框的两个更改事件中运行它

Option Explicit

Private Sub TextBox1_Change()
    CalculateResult
End Sub

Private Sub TextBox2_Change()
    CalculateResult
End Sub

Private Sub CalculateResult()
    If TextBox1.Value <> vbNullString And TextBox2.Value <> vbNullString Then
        Textbox3.Value = TextBox1.Value * TextBox2.Value 'adjust your calculation
    Else
        Textbox3.Value = "fill box 1 and 2 first"
    End If
End Sub
选项显式
专用子文本框1_Change()
计算结果
端接头
专用子文本框2_Change()
计算结果
端接头
私有子计算器结果()
如果TextBox1.Value vbNullString和TextBox2.Value vbNullString,则
Textbox3.Value=TextBox1.Value*TextBox2.Value'调整您的计算
其他的
Textbox3.Value=“首先填写框1和2”
如果结束
端接头

请编辑您的问题,向我们展示您已经尝试过的操作(即使它不会产生您预期的结果)-当您可以看到代码时,调试代码会容易得多!你的代码有什么问题?你会犯哪些错误?你需要更加精确。帮助我们帮助你。请注意,更改
TextBox2\u change
中的值
TextBox2.value
是没有意义的,因为这将导致该更改事件的无限触发。实际上,我强烈建议您将文本框重命名为有意义的名称,这样您就不会一直混淆它们。在名称中使用数字是一种非常糟糕的做法。每个文本框2和3有两种不同的计算方法。TextBox2.value=textbox1.value-textbox1.value/100和TextBox3.value=(textbox1.value-textbox1.value)*100/textbox1.value@TBanerjee第二次计算没有意义
(textbox1.value-textbox1.value)
0
,后跟
*
/
结果始终为
0
。另外,我不明白您的问题是将这两行放入
TextBox1\u Change
事件中。感谢您指出错误,它将是(TextBox1.value-textbox2.value)选项显式Dim Lp As Double Dim Perc As Double Private Sub Calculate()Lp=CDbl(TextBox1.value)Perc=CDbl(textbox2.value)TextBox3.Value=Lp-Lp*Perc/100-End-Sub-Private-Sub-TextBox2_-Change()TextBox3.Value=Lp-Lp*CDbl(TextBox1.Value)/100-End-Sub-Private-Sub-TextBox3_-Change()TextBox2.Value=(Lp-TextBox2.Value)*100/Lp-End-Sub我已尝试过该代码,但不起作用:-Private-Sub-commandn1\u-Click()呼叫计算结束Sub@TBanerjee请不要在注释中添加代码。改为编辑原始问题并在那里添加代码。在VBA中,换行符很重要,我们无法在注释中看到它们。同时告诉你代码有什么问题,或者问一些问题。仅仅发布没有文本的代码对于我们帮助您来说是毫无用处的。