2015-05-04 2 views
0

У меня есть пользовательская форма, которая отлично работает. Теперь мне нужно отредактировать некоторые значения, которые я выбрал, используя пользовательскую форму, поэтому я хочу открыть форму пользователя с уже выбранными значениями. У меня уже есть пользовательская форма, которая сохраняет значения на некоторых листах, я пытаюсь открыть ту же пользовательскую форму, но со значениями, которые я уже выбрал, когда я открываю пользовательскую форму.Нужно открыть пользовательскую форму с помощью списков combobox, но с уже выбранными значениями

Как я могу это сделать? Это мой код:

Private Sub CommandButton1_Click() 

    Worksheets("Info").Activate 

    With Worksheets("Info").Range("A:A") 
     Set c = .Find(ComboBox1.Value, LookIn:=xlValues) 
     If Not c Is Nothing Then 

      Dim cliente As String 
      Dim prov As String 
      Dim dia As Integer 
      Dim mes As String 
      Dim año As Long 
      Dim prod As String 
      Dim fob As Long 
      Dim hon As Variant 
      Dim fee As Variant 
      Dim cont As Integer 
      Dim est As Integer 
      cliente = c.Offset(0, 1).Value 
      prov = c.Offset(0, 2).Value 
      dia = c.Offset(0, 3).Value 
      mes = c.Offset(0, 4).Value 
      año = c.Offset(0, 5).Value 
      prod = c.Offset(0, 6).Value 
      fob = c.Offset(0, 7).Value 
      hon = c.Offset(0, 8).Value 
      fee = c.Offset(0, 9).Value 
      cont = c.Offset(0, 10).Value 
      est = c.Offset(0, 21).Value 
      ' 
     End If 
    End With 
    'HERE STARTS THE PROBLEM!!! 
    ' Now I open the userform, I need comboboxs open with the old values   
    UserForm1.Show 
    UserForm1.ComboBox1.Value = cliente 
    UserForm1.ComboBox1.Value = prov 
    UserForm1.ComboBox1.Value = dia 
    UserForm1.ComboBox1.Value = mes 
    UserForm1.ComboBox1.Value = año 
    UserForm1.TextBox1.Value = prod 
    UserForm1.TextBox1.Value = fob 
    UserForm1.TextBox1.Value = hon 
    UserForm1.TextBox1.Value = fee 
    UserForm1.TextBox1.Value = cont 
    UserForm1.ComboBox1.Value = est 

End Sub 

ответ

0

UserForm1.Show по умолчанию модальным, поэтому вам нужно установить его свойства, прежде чем показать форму. То, что в настоящий момент делает код, показывает форму, а затем после выхода формы создает новый UserForm1 (старый уже был выгружен), устанавливает его свойства, а затем позволяет выйти из области видимости. Попробуйте это:

Dim form_one As UserForm1 

Set form_one = New UserForm1 
temp.Controls("ComboBox1").Value = cliente 
'etc... 
form_one.Show 

Если я правильно понимаю технологический процесс правильно, простое решение может быть .Hide форма после того, как пользователь выбирает все вместо того, чтобы разгружать его.

+0

дорогой @comintern Я пробовал то, что вы закодировали, проблема сейчас что он дает мне «ошибку 424», и объект нужен – diego

0

Для добавления элементов в ComboBox использования ниже синтаксисом:

ComboBox1.AddItem "your value" 

так:

UserForm1.ComboBox1.AddItem = cliente 

Для показывая пункт по умолчанию использовать его индекс :

UserForm1.ComboBox1.ListIndex = 2 

Если только его текст использовать цикл:

For i = 1 To ComboBox1.ListCount 
    If (ComboBox1.List(i) = myValue) Then 
     ComboBox1.ListIndex = i 
     Exit For 
    End If 
Next i 
+0

Я знаю, как это сделать, мне нужно открыть конкретное значение, когда я открываю форму пользователя, приветствия. – diego

+0

@diego вы хотите показать выбранный по умолчанию элемент, если да, то я отредактировал ответ;). –

+0

@ shA.t, Да, я хочу показать элемент по умолчанию, у которого есть только текст. Я пробовал то, что написал yo, но его doesnt work = (, Если бы вы могли отредактировать мой код дырки с тем, что вы мне дали, было бы здорово. – diego