Заранее спасибо за помощь!
Я приличный с 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