我在Word 2016文档中有一个文本框。这不是TextBox表单对象,而是从此处的“插入”选项卡插入的普通文本框:
我正在尝试在打开文档时检查它是否为空。对于我的一生,我不知道该怎么做。我已经尝试了以下所有方法:
If (Len(ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes("Text Box 2").TextFrame.TextRange.Text & vbNullString) = 0) Then
If (IsNull(ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes("Text Box 2").TextFrame.TextRange.Text)) Then
If (LTrim(RTrim(ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes("Text Box 2").TextFrame.TextRange.Text)) = "") Then
If (ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes("Text Box 2").TextFrame.TextRange.Text = "") Then
当文本框为空时,这些都不返回true吗?这是文本框:
似乎文本框中总是包含一个段落标记(我无法删除)。这是VBA手表显示的内容:
Watch : : ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes("Text Box 2").TextFrame.TextRange.Text : "
" : String : ThisDocument.Document_Open
请注意,手表是两行,这让我觉得里面有CRLF或其他东西吗?
答案 0 :(得分:1)
在其他情况下为空的文本框中始终会有一个段落中断。因此,您可以按照以下方式使用某些东西:
Private Sub Document_Open()
With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes("Text Box 2")
If Not .TextFrame Is Nothing Then
If Trim(.TextFrame.TextRange.Text) = vbCr Then
MsgBox "Empty Text Range"
End If
Else
MsgBox "No Text Range"
End If
End With
End Sub