以与UserForm控件相同的顺序循环WORD DOC Userform组合框更改事件和更新源范围

时间:2018-06-28 16:38:09

标签: loops events word-vba

提前感谢您的帮助!

我在Excel中使用VBA很好。但是,了解Word的差异就等于从头开始学习所有差异!因此,如果您提供的解决方案仅适用于WORD,请进行说明,以便我可以了解它们之间的区别。

所以我的目标有两个主要部分。我相信我已经解决了第1部分,但无法弄清楚第2部分。有可能第1部分需要更改才能使第2部分正常工作,但是我在过去的几周中竭尽全力弄清楚了,现在终于寻求帮助。

目标: 出于在用户窗体中使用“预览面板”文本框的目的,以便用户可以在同一用户窗体上查看通过控件选择构建的实时结果。此外,如果用户更改任何控件选择,实时预览将更新,并保持正确的顺序。

在用户首次通过用户窗体后在预览面板中看到的示例文本:

  

Original Choice CB 01;原始选择CB 02;原始选择CB 03;等

如果用户更新,则在预览面板中看到的示例文本:

  

Original Choice CB 01; NEW Choice CB 02;原始选择CB 03;等等

解决了这么远:我已经弄清楚了如何将控件值提取到WORD Doc Section.Last.Range中,然后从该WORD Doc部分中填充PreviewPanel文本框。这是我用来执行此操作的代码:

Sub UpdateWordDoc_AfterUpdate_EVERYcontrol()

Dim docWordObj As Document
Dim cntrl As MSForms.Control
Dim SrcRng As Word.Range
Dim DestRng As Word.Range
Dim MyRng As Word.Range

Set docWordObj = Application.ActiveDocument

Set SrcRng = docWordObj.Sections.Last.Range
    SrcRng.MoveEnd wdCharacter, -1    

Set DestRng = docWordObj.Sections.Last.Range
    DestRng.Collapse Direction:=wdCollapseEnd

                For Each cntrl In userform_MemoTemplate.Controls    'Me.Controls

                    If TypeName(cntrl) = "ComboBox" Then

                        With DestRng
                            .InsertAfter cntrl.Name & ": " & cntrl.Value & "; "
                            .Collapse Direction:=wdCollapseEnd
                            .MoveEnd wdWord
                        End With

                    End If

                Next cntrl

userform_MemoTemplate.txtbx_MemoPreview.Value = SrcRng

End Sub

需要帮助: 如果用户检查了他们输入的内容,并决定更改组合框输入,则在用户窗体上出现字段时,需要在目标范围内以相同的顺序更新对输入的更改。我能想象的唯一方法就是简单地通过循环重新加载所有字段。

当事件更改时,如果不重复用户窗体上所有20个以上字段中的代码,是否可以触发这样的循环?

再次感谢您!等不及要学习如何解决这个问题!

亨利

0 个答案:

没有答案