0

私が使用しなければならない Excel UserForm には、コンボボックスがあります。その RowSource は 2 列の範囲です (Text列 2 のプロパティValueコール、列 1 のプロパティ コール)。

textコンボボックス (フォーム上) をクリックして変更するvalueと更新されますが、VBA コードでプロパティを設定.Textすると、「.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

フォームにコードを追加する必要があります。テキスト ボックスをダブルクリックすると、新しい (空の) イベントが作成されます。そこにコードを追加して、.text が変更されたときにコンボボックスの値を変更できます。

于 2013-02-11T13:34:10.240 に答える
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私の場合、幅は 1 列です...そして、comboBox のプロパティの 1 つとして a を指定しましcontrolSourceた。デュアル列で表示されているものを見ることができませんでした-私にとって、rowSource範囲が2列幅の場合、コンボボックスは最初の列にのみ応答しています...

于 2013-02-11T14:53:20.047 に答える