【发布时间】:2018-01-31 16:45:33
【问题描述】:
我正在设计一个必须受到保护的文档,以便用户只能编辑某些字段。我需要在更改原始分数时自动执行一个计算分数描述的宏。我目前正在使用“富文本内容控件”来允许用户输入数字分数。
我正在使用以下宏代码:
Sub UpdateDescriptor()
Dim TheFinalScore As String
TheFinalScore = ActiveDocument.Bookmarks("FinalScore3").Range.Text
Dim BMRange As Range
Set BMRange = ActiveDocument.Bookmarks("FinalScore2").Range
If IsNumeric(TheFinalScore) Then
Select Case TheFinalScore
Case 1 To 1.5: BMRange.Text = "Outstanding"
Case 1.51 To 2: BMRange.Text = "Excellent"
Case 2.01 To 2.5: BMRange.Text = "Average"
Case 2.51 To 3: BMRange.Text = "Below Average"
Case Is > 3: BMRange.Text = "Unsatisfactory"
Case Else: BMRange.Text = "Invalid Final Score"
End Select
Else
BMRange.Text = "Invalid Final Score"
End If
ActiveDocument.Bookmarks.Add "FinalScore2", BMRange
End Sub
手动运行宏可以正常工作,但我无法找到任何方法在更改时自动执行宏。
我也尝试过使用旧版“文本表单域”。我可以让宏在进入时触发,但不能退出。关于如何让“富文本内容控件”在退出时触发宏的任何想法?或者让“文本表单域”在退出时触发?我还注意到“文本表单字段”属性中指定的数字格式没有被强制执行。
谢谢!
【问题讨论】:
-
FWIW,使用一个表单域,它的'计算退出属性集,整个事情可以在不需要宏的情况下完成。这一切都可以通过字段编码来完成。这也有一个优点,即您的进程不会受制于启用/禁用宏的用户。