如何将8个文本框中的值总和为单个文本框?

我找不到办法做到这一点。 我认为这是一个非常基本的问题,但我只是与Excel VBA新,并找不到合适的公式。

最近我明白要做的总和,我必须改变每个textboxes为整数首先,然后我可以将其添加到一个单一的textbox ,所以我将每个值转换为整数,而我总结他们一个一个文本框。

我已经试过这个代码。

 Private Sub txtTotal_Change() txtTotal.Value = CInt(txtKas) + CInt(txtInvestasi) + CInt(txtDanaTerbatas) + CInt(txtBruto) + ... End Sub 

我怎样才能将这个多个文本框(8个文本框)合并成一个文本框?

您需要在用户可更改的文本框上添加更改事件。

让我说下UserForm和TextBox1TextBox3
UserForm1
TextBox3将是TextBox1和TextBox2的总和。

右键单击Project下的UserForm1 ,然后selectView Code ,然后放入TextBoxesSum Sub(我使用Doubletypes来接受小数):

 Private Sub TextBoxesSum() Dim Total As Double Total = 0 If Len(TextBox1.Value) > 0 Then Total = Total + CDbl(TextBox1.Value) If Len(TextBox2.Value) > 0 Then Total = Total + CDbl(TextBox2.Value) ' Add more for the rest of your text boxes TextBox3.Value = Total End Sub 

为了安全和智能,您还应该从用户input中进行重点检查。 由于文本框的数量,最好有一个函数来处理它:

 Private Function NumericOnly(ByVal KeyAscii As MSForms.ReturnInteger) As MSForms.ReturnInteger Dim Key As MSForms.ReturnInteger Select Case KeyAscii Case 46, 48 To 57 ' Accept only decimal "." and numbers [0-9] Set Key = KeyAscii Case Else KeyAscii = 0 ' Minor bug earlier Set Key = KeyAscii End Select Set NumericOnly = Key End Function 

现在回到UserForm1对象,右键单击TextBox1和View Code ,放入:

 Private Sub TextBox1_Change() TextBoxesSum End Sub 

还要检查KeyPress事件:

 Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) KeyAscii = NumericOnly(KeyAscii) End Sub 

现在复制上面2组文本框并粘贴下面,然后replace下划线之前的string以匹配文本框的名称。

示例输出:
样品

当有人试图更改总计框中的值时,您(可能)不希望总结文本框中的值 – 当其他八个框中的值发生更改时,您希望将它们相加。

最简单的方法是创build一个简单的macros来对文本框的值进行求和,然后从用户可能改变的8的改变事件中调用该macros。

macros将文本框求和并将其放入总计框中

 Private Sub sum_boxes() txtTotal = CLng(txtKas.Value) + CLng(Investasi.Value) + CLng(DanaTerbatas.Value) End Sub 

什么样的变化事件会是什么样子

 Private Sub txtKas_Change() Call sum_boxes End Sub 

如前所述,您需要为八个盒子中的每一个进行一次更换事件。

完全不同的是,使用文本框来存储总数可能是一个坏主意,因为你不希望你的用户改变它的内容。 一个select是locking文本框,正如PatricK所build议的那样,另一个select是使用不同的对象来保存数字,例如标签,只要将其标题更改为与当前总计相似。