0

我必须使用的 Excel 用户窗体有一个组合框。它的 RowSource 是一个 2 列范围(第 2 列的属性Textcoles,第 1 列的属性Valuecoles)。

当我text通过单击组合框(在表单上)更改时,value会更新,但是当我.Text在 VBA 代码中设置属性时,“.Value”值不会更新。如何强制 vba 代码复制手动行为?谢谢。

Public Sub generalSettingsForm_MyCombo(ByVal newValue As String)
    generalSettingsForm.MyCombo.Text = newValue
    Call generalSettingsForm.someUnrelatedButton_Click ' some code
    Call generalSettingsForm.MyCombo_Change ' some code
    Dim str As String
    srt = generalSettingsForm.RatingModelCombo.Value
End Sub

触发一些更新事件将是最好的选择,但 VBA 上下文菜单没有任何与此类似的东西。

4

2 回答 2

1

以下对我有用(此代码位于常规模块中):

Sub demoUpdate()
    With UserForm1
        .ComboBox1.Text = "this"
        MsgBox "text is now " & .ComboBox1.Text
        MsgBox "value is now " & .ComboBox1.Value
        .Show
        MsgBox "value is now " & .ComboBox1.Value & "; text is " & .ComboBox1.Text
        .ComboBox1.Text = "that"
        MsgBox "text is now " & .ComboBox1.Text
        MsgBox "value is now " & .ComboBox1.Value
        .Show
        MsgBox "value is now " & .ComboBox1.Value & "; text is " & .ComboBox1.Text
    End With
End Sub

rowSource我的情况下是单列宽......我确实将 a 指定controlSource为组合框的属性之一。我看不到您在双列中看到的内容 - 对我来说,组合框仅在rowSource范围为两列宽时响应第一列...

于 2013-02-11T14:53:20.047 回答
1

您需要在表单中添加一些代码。当您双击文本框时,您将看到创建了一个新的(空)事件 - 您可以在此处添加代码以在更改 .text 时更改组合框的值。

于 2013-02-11T13:34:10.240 回答