2016-05-09 6 views
2

У меня есть вопрос относительно того, как изменить форму пользователя. В основном у меня есть макрос, где пользовательская форма позволяет пользователю выбирать диапазон ячеек для использования в процессе. Тогда, если я использую макрос в другом листе, диапазон, использованный ранее, все еще существует. Например, если в листе 1 я выбрал «A20: A30», а затем я использую тот же макрос в листе2, значения диапазона все еще выбрали значения «A20: A30» листа 1. Я знаю, что довольно просто выбрать диапазон Я хочу, но человек, которому помогает Im, хотел бы, чтобы диапазон был пустым при каждом запуске макроса, поэтому ему не нужно снова перемещаться на активный лист, чтобы выбрать диапазон.Как изменить значения, отображающие UserForm в VBA Excel

Вот пример с изображениями. В листе «CurvasTC» (кнопка «Интерпола» показывает только пользовательскую форму) Я выбираю диапазон и запускаю процесс, нажав кнопку «Ejecutar». Затем, если я перейду на лист «Волатилидад» и запустил процесс , появится форма пользователя со ссылками на лист TC. Мне хотелось бы, чтобы он показывал пустые значения или, по крайней мере, ссылку на активный лист.

Run 1

Run 2

Это код для пользовательской формы:

Public Sub CommandButton1_Click() 

Dim rangoa As Range 
Dim rangob As Range 
Dim rangoc As Range 

Set rangoa = Range(rangox.Value) 
Set rangob = Range(rangoy.Value) 
Set rangoc = Range(rangoxout.Value) 

ventana.Hide 
Run (I_Lineal(rangoa, rangob, rangoc)) 

End Sub 

Private Sub Label1_Click() 

End Sub 

Private Sub Label3_Click() 

End Sub 

Private Sub rangox_BeforeDragOver(Cancel As Boolean, ByVal Data As MSForms.DataObject, ByVal x As stdole.OLE_XPOS_CONTAINER, ByVal y As stdole.OLE_YPOS_CONTAINER, ByVal DragState As MSForms.fmDragState, Effect As MSForms.fmDropEffect, ByVal Shift As Integer) 

End Sub 

Private Sub rangoxout_BeforeDragOver(Cancel As Boolean, ByVal Data As MSForms.DataObject, ByVal x As stdole.OLE_XPOS_CONTAINER, ByVal y As stdole.OLE_YPOS_CONTAINER, ByVal DragState As MSForms.fmDragState, Effect As MSForms.fmDropEffect, ByVal Shift As Integer) 

End Sub 

Private Sub UserForm_Click() 

End Sub 

Код для кнопки Interpola действительно просто просто:

Sub corrermacro() 
    ventana.Show 
End Sub 

пользовательская форма, в которой вы выбираете диапазон, называется " Вентана».

+0

Пожалуйста, поделитесь паролем для кнопок 'Interpola'. – omegastripes

+0

@omegastripes Код для кнопки Interpola - это просто ventana.show – Anflores

+0

@omegastripes форма пользователя в изображениях называется «ventana» – Anflores

ответ

2

Вы скрываете форму только в конце вашего подкаталога. Это сделает его invisible, но все еще там (со всем содержимым). Если вы хотите, чтобы он был пустым, в следующий раз, когда вы инициализируете форму, вы должны unload: Unload ventana.

Итак, вы должны добавить, что в конце вашего под. Просто знайте, что все данные в форме после этой команды больше не доступны. Следовательно, эта команда должна быть последней командой в вашем подразделе:

Public Sub CommandButton1_Click() 

Dim rangoa As Range 
Dim rangob As Range 
Dim rangoc As Range 

Set rangoa = Range(rangox.Value) 
Set rangob = Range(rangoy.Value) 
Set rangoc = Range(rangoxout.Value) 

ventana.Hide 
Run (I_Lineal(rangoa, rangob, rangoc)) 
Unload ventana 

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