2017-01-08 3 views
0

Как мне (нажатие кнопки «Продолжить») позволяет передать текущую строку из comboBox @ userForm в excel для ячейки документа и закрыть форму?VBA, MS Excel. Обновить значение поля со списком при изменении


Мой текущий код не работает должным образом. Он не обновляет значение поля со списком при изменении и всегда возвращает исходное значение («Выбрать подтип»).

Вот мой код модуля:

Public main As Integer, i As Integer, temp As String, x As String 

Public Sub dataValidation() 

Dim i As Integer 

For i = 3 To 22 
    Select Case Cells(i, 6).Value 
     Case "Income" 
      main = 1 
      If Cells(i, 7).Value = "" Then 
       Cells(i, 7).Value = getData 
      End If 
     Case ... 
     End Select 
Next i 

End Sub 


Public Function getData() 

    UserForm1.Show 
    x = UserForm1.cboSubtype.Value 
    getData = x 

End Function 


И мой код формы:

Private Sub UserForm_Initialize() 

With cboSubtype 
    '.Value = "Select subtype"' 

    Select Case main 
     Case 1 
      .AddItem "Parents" 
      .AddItem "Grant" 

     Case 2 
      .AddItem "Food" 
      .AddItem "Drink" 

     Case 3 
      .AddItem "Books" 
      .AddItem "Fees" 

    End Select 
End With 

End Sub 
+0

что вы пытаетесь достичь? когда вы выбираете значение из Combo-Box, что вы хотите? Какова цель вашей функции 'getData()'? –

ответ

3

вы можете принять эти незначительные изменения

  • UserForm код панели

    Private Sub Continue_Click() 
        Me.Hide 
    End Sub 
    
    Private Sub UserForm_Initialize() 
    
        With Me.cboSubtype 
         '.Value = "Select subtype"' 
    
         Select Case mainVal 
          Case 1 
           .AddItem "Parents" 
           .AddItem "Grant" 
    
          Case 2 
           .AddItem "Food" 
           .AddItem "Drink" 
    
          Case 3 
           .AddItem "Books" 
           .AddItem "Fees" 
    
         End Select 
        End With 
    End Sub 
    
  • код модуля

    Option Explicit 
    
    Public mainVal As Integer 
    
    Public Sub dataValidation() 
    
        Dim i As Integer 
    
        For i = 3 To 22 
         Select Case Cells(i, 6).value 
          Case "Income" 
           mainVal = 1 
           If Cells(i, 7).value = "" Then Cells(i, 7).value = getData 
        '  Case ... 
          End Select 
        Next i 
    
    End Sub 
    
    
    Public Function getData() 
    
        With UserForm4 
         .Show 
         getData = .cboSubtype.value 
        End With 
        Unload UserForm4 
    
    End Function 
    
Смежные вопросы