VBA,MS Excel。更改时更新组合框值

时间:2017-01-08 17:05:01

标签: vba excel-vba excel

如何(在'继续'按钮单击)使它从comboBox @ userForm输入当前字符串到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

1 个答案:

答案 0 :(得分: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