将多行文本框的内容放入Word文档后文本行前面的小框

little boxes in front of text lines after putting contents of multiline textbox in Word document

我有一个带有多行文本框的用户表单。 EnterKeyBehavior = True。我 运行 宏,表格打开,我键入几行文本,在每行后按 Enter。该文本框的值被放入一个变量中,该变量稍后通过占位符文本 <> 的 Find/replace 放入 word 文档中。

文本已放入文档中,多行文本框条目中的第一行看起来不错,但每隔一行都以一个小空框开头(一些 Ascii/unicode 我不知道的字符)。见图。

我试图通过在 vbCr、vbLf、vbCrLf、Char(10)、Char(11)、Char(13) 上进行替换来替换那个小白框,这是我在其他帖子中找到的解决方案,但其中 none 对我有用。解决方法是什么?

这就是我现在在表单中的内容,我正在尝试清理该文本框的内容,然后再将值传递给我随后放入 word 文档的变量。

Private Sub cmdCompInfoOK_Click()
    txtCompanyInfo.Text = Replace(txtCompanyInfo.Text, Chr(11), "")
    slkCompanyInfo = frmLtrAddress.txtCompanyInfo
    
    Me.Hide
End Sub

多行字段称为 txtCompanyInfo。 slkCompanyInfo 是我想从文本框中放置值的变量,我在调用用户窗体的主模块中将其声明为 Public。

将以下代码放入常规模块中,它将创建一个包含输入字符串中所有字符信息的字符串。

Function DumpString(s As String, Optional specialCharsOnly As Boolean = False) As String
    ' Write all chars of String as ASCII-Value, concatenated as string
    
    Dim i As Long
    For i = 1 To Len(s)
        Dim x As String
        Dim a As Long, dumpMe As Boolean, c As String
        a = AscW(Mid(s, i, 1))
        
        dumpMe = Not specialCharsOnly Or a < 32 Or a > 128
        If a = 13 Then
            c = "<CR>"
        ElseIf a = 10 Then
            c = "<LF>"
        ElseIf a = 9 Then
            c = "<TAB>"
        ElseIf a = 0 Then
            c = "<NUL>"
        Else
            c = Mid(s, i, 1)
        End If
        x = a & "(" & c & ")"
        
        If dumpMe Then
            DumpString = DumpString & IIf(DumpString = "", "", ",") & x
        End If
    Next i
End Function

在你的事件例程中,放置一个像

这样的语句
Debug.Print DumpString(slkCompanyInfo)

如果您输入的字符串太长,您可以将第二个参数设置为True,在这种情况下所有常规字符都会被跳过。