2016-01-18 2 views
0

Я создал Word 2010 VBA Macro Sub с пользовательской формой. Sub ищет == Коды == в документе формы, помещает найденный код == в качестве метки в пользовательскую форму, а затем позволяет пользователю заменить код == == своим входом в Combobox (часть того же UserForm).Сохранение списков ComboBox Население

Каждая строка введенных данных затем сохраняется в списке Combobox в UserForm для последующего выбора, если это необходимо.

Это работает нормально, пока не истечет срок действия этого макроса/Userform, потому что искомый документ завершен (или отменен).

Я хотел бы открыть следующий документ формы, и в новом запуске этого же макроса/Sub сохранится прежний список данных combobox (в качестве параметров для заполнения этого следующего открытого документа - например, код == Имя клиента == будет часто появляться, и я предпочел бы выбрать запись списка списков, вместо того, чтобы набирать имя клиента снова и снова)

Но я не могу сохранить список списков со списком в новом запуске этого Macro Sub, заполненного предыдущими данными combobox, даже если я изолирую эту процедуру как отдельный модуль и предварительно определю переменные с помощью параметров «Public».

Так, прежде, чем я стучу себя, пытаясь понять это ... только простой вопрос:

только макрос заканчивается все из публичных переменных «упал»? Когда я использовал программу в макросах DOS WP.51, вы могли бесконечно хранить строки данных в ОЗУ (до тех пор, пока вы их не «убили» или не закрыли WP)

Если переменная Public не «упала», образец кода, посредством которого общедоступные переменные могут быть сохранены и заполнены в дублируемую форму пользователя combobox.

Любые идеи, каким бы кратким, поможет

Спасибо много заранее. , ,

Майк

+0

Просто, чтобы получить представление правильно. Я предполагаю, что этот макрос «UserForm» хранится в шаблоне «Нормальный»? а затем, когда вы откроете «следующий документ формы», вы бы закрыли Word, а затем снова открыли его? –

ответ

1

Не совсем уверен, что вы пытаетесь сделать, но то, что я рекомендую следующее (при условии, что форма называется, «UserForm1», а затем «UserForm2»:

1) Создайте модуль, который используется, чтобы открыть форму с помощью:

Sub test() 
    UserForm1.Show 
    'Rest of things that you want to do...you will be able to access the values in your combobox in userform1 
    UserForm2.Show 
End Sub 

2) в вашем UserForm1, включают в себя кнопку, которая будет закрывать форму и включать следующий код:

Sub btn_Exit_Click() 
    Me.Hide 
End Sub 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 

    If CloseMode = 0 Then 
     Cancel = True 
     MsgBox "The X is disabled, please use a button on the form.", vbCritical 
    End If 

End Sub 

Это позволит вам сохранить контроль над UserForm и обеспечить сохранение значений. Возможно, можно отключить кнопку «Закрытие», но я не смог ее понять (мой опыт с формами в основном связан с Access, и у них разные свойства).

Скрытие формы сохраняет значения, чтобы вы могли смотреть на них, тогда как когда пользователь закрывает форму, вы теряете значения, которые были в ней.

* Примечание: Код для отключения кнопки X, взятую из VBA Express

+0

Спасибо, OpieDad.Нет, это не проблема; но я найду очень полезным, как вы отключите кнопку X. Благодарю. Майк – Mike28

+0

Я должен был проверить это. Метод, который я предоставил, фактически не работает; Я отредактирую, чтобы включить тот, который делает. – OpiesDad

Смежные вопросы