Vba 在Excel用户窗体上创建永久性文本框

Vba 在Excel用户窗体上创建永久性文本框,vba,excel,ms-word,Vba,Excel,Ms Word,因此,我正在为我的客户创建一个工具和用户指南。我正在尝试以用户表单的形式将用户指南集成到Excel中。我的第一次尝试是将它们作为word文档的图像插入,但是,如果用户指南被更新,那么任何人都需要做大量的工作来更新用户表单。因此,我想看看是否可以有一个按钮供用户单击,该按钮可以清除userform并在用户指南更新时动态地重新创建它。我的问题是,当我运行代码时,我创建的包含用户指南文本的文本框在用户窗体关闭后消失 我是否必须设置一定数量的文本框,或者在用户向用户指南中添加新部分的情况下,这是否可以是

因此,我正在为我的客户创建一个工具和用户指南。我正在尝试以用户表单的形式将用户指南集成到Excel中。我的第一次尝试是将它们作为word文档的图像插入,但是,如果用户指南被更新,那么任何人都需要做大量的工作来更新用户表单。因此,我想看看是否可以有一个按钮供用户单击,该按钮可以清除userform并在用户指南更新时动态地重新创建它。我的问题是,当我运行代码时,我创建的包含用户指南文本的文本框在用户窗体关闭后消失

我是否必须设置一定数量的文本框,或者在用户向用户指南中添加新部分的情况下,这是否可以是动态的?我是否可以创建文本框,在用户窗体关闭后保留在其上

我的代码如下:

    For i = 1 To totPara
        If wrdDoc.Paragraphs(i).Style = wrdDoc.Styles("Heading 1") Or wrdDoc.Paragraphs(i).Style = wrdDoc.Styles("Heading 2") Then
            headerCtr = headerCtr + 1
            If headerCtr = 2 Then
                labelCtr = labelCtr + 1
                Set tempTxt = Nothing
                Set tempTxt = userGuide.Controls.Add("Forms.TextBox.1", "Test" & labelCtr, True)
                With tempTxt
                    .Height = 276
                    .Width = 288
                    .Top = 54
                    .Left = 42
                    .MultiLine = True
                End With

                tempTxt.Text = wrdDoc.Paragraphs(i).Range.Text & Chr(13)
            ElseIf headerCtr > 2 Then
                Exit For
            End If
        ElseIf labelCtr <> 0 Then
            tempTxt.Text = tempTxt.Text & wrdDoc.Paragraphs(i).Range.Text & Chr(13)
        End If
    Next i
i=1至1的

如果wrdDoc.段落(i).Style=wrdDoc.样式(“标题1”)或wrdDoc.段落(i).Style=wrdDoc.样式(“标题2”),则
headerCtr=headerCtr+1
如果headerCtr=2,则
labelCtr=labelCtr+1
Set TELTEXT=无
Set testxt=userGuide.Controls.Add(“Forms.TextBox.1”、“Test”和labelCtr,True)
带着诱惑
.高度=276
.宽度=288
.Top=54
.左=42
.MultiLine=True
以
testext.Text=wrdDoc.parations(i).Range.Text&Chr(13)
如果HeaderCtrl>2,则
退出
如果结束
ElseIf labelCtr 0然后
TELTXT.Text=TELTXT.Text&wrdDoc.parations(i).Range.Text&Chr(13)
如果结束
接下来我
目前,我将其设置为仅当测试的
headerCtr
等于2时才创建一个新的文本框,但最终我希望为9个部分中的每一部分创建一个新的文本框


提前感谢您的帮助。

您可以选择隐藏用户表单,而不是关闭用户表单。当文本框被隐藏时,仍然可以从调用表单访问文本框

Dim frm1 As frmMainInput
Set frm1 = New frmMainInput
frm1.tbProjectNumber.Value = iProject_Number
frm1.txtDocsInUse.Text = sDocsInUse
frm1.Show

If frm1.Proceed = False Then
   GoTo Local_Exit
End If

iProject_Number = CInt(frm1.tbProjectNumber.Value)
最终调用frm.close并设置frm=Nothing

在UserForm中:

     Private Sub cmdCancel_Click()
        Proceed = False
        Me.Hide
    End Sub        
    Private Sub cmdOK_Click()
        Proceed = True
        Me.Hide
    End Sub

没有关于刷新图像等的线索。c

我想看看这个:这怎么不是一个合理的问题?我正在创建文本框,我想知道的是,是否有一种方法可以让它们永久地附加到用户表单上,并且在用户表单关闭时不会消失。我说过这不是一个合法的问题吗?你读过链接了吗?它还说“如果你正在读这篇文章,而你没有处于那个位置”。想想你自己。无论如何,本文的其余部分将展示如何分解代码,以找出问题所在。我发现它非常有用。加载表单时添加的任何控件都将在表单关闭时删除。如果需要永久控件,则需要操纵设计器,这意味着用户必须在其安全设置中对VBA项目具有受信任的访问权限。我建议找到另一种方法-指向文档本身的超链接或.chm帮助文件。