无法验证表单(非用户表单)中的activex文本框,只能验证Word文档本身中的表单



我已经到处寻找解决方案,最后我想我会问的。

我有一个在Word中创建的表单。它不像VB项目中那样是一个正式的"userform1"类型的表单。它全部写在Word文档中。

我将让一位负责人每天晚上给我发电子邮件。我已经能够成功地让用户点击提交按钮并通过电子邮件发送表格(MS Word(NighlyReport.DOCM((。

在现在的最后阶段,我"试图验证我所有的文本框,但没有成功",但运气不佳。

我想让每个文本框都是必需的,如果用户没有输入值,我希望"setFocus"将用户返回到文本框。由于我没有使用官方的"用户表单",我似乎没有这种方法——将用户返回表单_更改_GotFocus_LostFocus_KeyPress_鼠标下降

只要我在文本框内,所有这些都可以正常工作。它们都没有将用户发送回它。

有人知道怎么做吗。我想要一个简单美观的表格来填写并附加到outlook(我已经完成了(。只需要验证文本框。我也愿意用命令按钮验证所有这些,但仍然无法将焦点放回用户未填写的文本框。

为了简单起见,我在这里只发布了两个文本框,我的基本验证不起作用。需要明确的是,我没有使用用户表单网格,也许这使得所有这些都不可能实现

感谢:

Private Sub txt1_Change()
If txt1.Value = "" Then
MsgBox "need your input"
Else
Exit Sub
End If
End Sub

Private Sub txt2_Change()
If txt2.Value = "" Then
MsgBox "need your input"
Else
Exit Sub
End If
End Sub

尝试以下方法

Dim iShp As InlineShape, StrOut As String
For Each iShp In ActiveDocument.InlineShapes
With iShp
If .Type = wdInlineShapeOLEControlObject Then
If .OLEFormat.ClassType Like "Forms.TextBox.*" Then
If Trim(.OLEFormat.Object) = "" Then StrOut = StrOut & vbCr & .OLEFormat.Object.Name
End If
End If
End With
Next
If StrOut <> "" Then
MsgBox "The following controls have not been completed: " & StrOut
Exit Sub
End If