我在Word中有几个文本框,我想计算平均值并在另一个文本框中打印此平均值。值是数字。
我之前的代码工作正常,但前提是没有值被删除或更改。 VBA中是否有更灵活的均值函数,如果文本框发生更改,它会始终自动更新?
这是我以前的代码:
Private Sub TextBox71_Change()
TextBox81.Text = Round(((CDbl(TextBox11.Text) + CDbl(TextBox21.Text) + CDbl(TextBox31.Text)) / 3), 2)
End Sub
提前谢谢。
答案 0 :(得分:0)
我还没有经过测试,我怀疑你需要完全引用的对象,而不仅仅是TextBox21等,但是我所提出的想法看起来如下所示;返回类型的字符串。
Private Sub TextBox11_Change()
TextBox81.Text = CalculateMean
End Sub
Private Sub TextBox21_Change()
TextBox81.Text = CalculateMean
End Sub
Private Sub TextBox31_Change()
TextBox81.Text = CalculateMean
End Sub
Public Function CalculateMean() As String
If Len(TextBox11.Text) + Len(TextBox21.Text) + Len(TextBox31.Text) = 0 Then
CalculateMean = vbNullString 'CalculateMean = "0"
ElseIf TextBox11.Text = vbNullString Or TextBox21.Text = vbNullString Or TextBox31.Text = vbNullString Then
CalculateMean = CStr(Round(((CDbl(IIf(TextBox11.Text = vbNullString, 0, TextBox11.Text)) + CDbl(IIf(TextBox21.Text = vbNullString, 0, TextBox21.Text)) + CDbl(IIf(TextBox31.Text = vbNullString, 0, TextBox31.Text))) / 2), 2))
Else
CalculateMean = CStr(Round(((CDbl(TextBox11.Text) + CDbl(TextBox21.Text) + CDbl(TextBox31.Text)) / 3), 2))
End If
End Function
答案 1 :(得分:0)
如果您使用的是formfields而不是ActiveX文本框,则可以在没有单行VBA代码的情况下完成该批次 - 这也意味着用户不需要允许您的宏运行。 Mac上也不支持ActiveX。
要了解如何使用字段编码在Word中进行各种其他计算,请查看我的 Microsoft Word字段数学教程,位于:
http://windowssecrets.com/forums/showthread.php/154369-Microsoft-Word-Field-Maths-Tutorial
或: