0

プログラミング経験はありますが、VBA初心者です。私が取り組んでいるユーザーフォームがあります。このフォームには、リストが初期化されたコンボ ボックスがあります。私がやろうとしていることは次のとおりです。

* ComboBox からユーザーが入力した ID 番号の値を取得します * ユーザーが入力した値を取得し、ワークシートの値の範囲を使用してその一致を見つけます (つまり、Worksheet.Range("ID_Number_List")) * 一致を取得したら、一致します一致するセルの位置を取得 * セルの位置を 1 列分オフセットして、ID 番号 (同じ行) に関連する名前を取得し、それを textBoxName.Value に設定 * 2 列分オフセットして取得ID 番号に関連する電話番号を textboxTele.value に設定します。

コンボボックスから値が選択されるとすぐにこれが発生するようにしたいので、私の質問は私のコードがコンボボックスに入るのですか、それとも次のテキストボックスに行くのですか? 人がタブで次のテキスト ボックスに移動するとすぐに、コードが自動的に実行されます。次のボックスに移動することなく、コードを完全に実行したいと考えています。

このコードは完全ではありませんが、ここに私が持っているものがあります(テスト実行を行ったばかりのオフセット部分を追加しませんでした):

Dim ORIValue As String 
'get value from combo_box Set 
ORIValue = COMBO_ORILIST.Value

Dim cLoc As Range 
Dim cORIVal As Range

'worksheet with the ID information Dim ORISheetList As Worksheet 
Set ORISheetList = Worksheets("ORI_LIST")

'
For Each cLoc In ORISheetList.Range("ORI_LIST")
'compare the input string from list- considering using Match function for this
If StrComp(cLoc, ORIValue,  vbTextCompare) Then TextBAgencyName.Value = "test"
Else: Next cLoc
End If

どう考えているか教えてください。すべてを書き直す必要がある場合は、そうします。

4

1 に答える 1

1

あなたのコードはコンパイルされません。

ComboBox1 という単一のコンボボックスを持つユーザー フォームがある場合は、次のようにセル検索コードをフォーム コードに配置する必要があります。

Private Sub ComboBox1_Change()
    MsgBox "yep, this is where the code should go"
End Sub

コンボボックスのrowsourceプロパティを選択した値のインデックスと組み合わせて使用​​ すると、おそらく選択した値の検索を実際に実行する必要がないのではないかと思います。このようなものがうまくいくかもしれません:

Private Sub ComboBox1_Change()
    MsgBox Range(ComboBox1.RowSource).Cells(ComboBox1.ListIndex + 1)
End Sub

それが役立つことを願っています。

于 2012-07-05T05:15:29.527 に答える