Цикл WORD DOC Пользовательский список Combobox Изменения и обновление диапазона источника в том же порядке, что и элементы управления UserForm - PullRequest
0 голосов
/ 28 июня 2018

Заранее спасибо за помощь!

Я приличный с VBA в Excel. Но изучение различий для Word близко к изучению всего этого с самого начала! Поэтому, пожалуйста, если решение, которое вы предлагаете, работает только в WORD, уточните, чтобы я мог узнать о различиях.

Итак, моя цель состоит из двух основных частей. Я думаю, что я решил для части 1, но не могу понять часть 2. Возможно, что часть 1 нужно будет изменить, чтобы часть 2 работала, но я старался изо всех сил в течение последних нескольких недель, чтобы понять это, и теперь я наконец-то тянуться к помощи.

ЗАДАЧА: Для текстового поля «Панель предварительного просмотра» внутри пользовательской формы, чтобы пользователи могли видеть живой результат, построенный на основе их вариантов управления на той же пользовательской форме. Кроме того, если пользователь изменяет какой-либо элемент управления, предварительный просмотр будет обновляться, сохраняя правильный порядок.

Пример текста, видимого на панели предварительного просмотра после первого прохождения пользователем через пользовательскую форму:

Original Choice CB 01; Original Choice CB 02; Original Choice CB 03; и т.д.

Пример текста, отображаемого на панели предварительного просмотра, если пользователь обновляет:

Original Choice CB 01; NEW Choice CB 02; Original Choice CB 03; и т. д.

РЕШЕНО ТАК ДАЛЬШЕ: Я выяснил, как перетащить управляющие значения в WORD Doc Section.Last.Range, а затем заполнить текстовое поле PreviewPanel из этого раздела WORD Doc. Вот код, который я использую для этого:

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+ полях, которые будут в пользовательской форме?

Еще раз спасибо! Не могу дождаться, чтобы узнать, как решить эту проблему!

Henri

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...