2016-04-13 6 views
1

enter image description here 2つのテーブルがあるワークシートが1つあります。コンボボックスにテキストボックスの値の変更を埋め込むコード

1つのテーブルはグループヘッドで、もう1つのテーブルはコントロールヘッドです。

グループヘッドテーブルには、IDとともにいくつかの固有のレコードがあります。同様に、非流動資産にはID NCAがあり、流動資産にはID CAなどがあります。 コントロールヘッドテーブルには、grouphead idとともにいくつかの一意のレコードがあります。 SalmanとAmirはID NCAとAbdur Rehmanを持ち、RahimはID CAを持っています。

私はuserformを開くと、groupheadコンボボックスがgroupheadで読み込まれ、groupcode idテキストボックスにコンボボックスで選択された項目のIDが表示されます。

コントロールヘッドという名前の別のコンボボックスがあります。 私が欲しいのは、コントロールヘッドのコンボボックスは、groupheadテキストボックスにidが入っている値だけを入力します。

これまでの私のコードは以下の通りです:

Private Sub ComboBox1_Change() 
    Dim start As String 
    Dim start2 As String 
    Dim sfind As String 
    Dim sfind2 As String 
    Dim ws As Worksheet 
    Dim tbl As ListObject 
    Dim tbl2 As ListObject 

    Set ws = Sheets("Summary of Accounts") 
    Set tbl = ws.ListObjects("grouphead") 
    Set tbl2 = ws.ListObjects("controlhead") 

    With Me 
     If .ComboBox1.Value <> vbNullString Then 
      sfind = .ComboBox1.Value 
      start = Application.WorksheetFunction.VLookup(sfind, tbl.DataBodyRange, 2, False) 
       .TextBox1 = start 
     End If 
    End With 

    With Me 
     If .TextBox1.Value <> vbNullString Then 
      sfind2 = .TextBox1.Value 
      start2 = Application.WorksheetFunction.VLookup(sfind2, tbl2.DataBodyRange, 2, False) 
      .ComboBox2 = start2 
     End If 
    End With 
End Sub 

私はcontrolheadコンボボックスを移入することができません。

親切にレビューして手伝ってください。

+0

enter image description here

アクションでpostitの前にコードを確認する –

+0

私はテーブルの画像を投稿しています... –

答えて

0

私のサンプルデータ

enter image description here

コードためのロジック

  1. テキストボックスを移入、第一コンボボックスのクリックイベントでは
  2. をComboBox1のために表1の項目を追加します。第2コンボボックス

それは実際にはかなり簡単ですが、私は答えを投稿する前に私ができるように、あなたがテーブルのあなたのスクリーンショットを表示することができ、コード

Dim tblGH As ListObject 
Dim tblCH As ListObject 

'~~> Populate combobox1 in userform init event 
Private Sub UserForm_Initialize() 
    Dim ws As Worksheet 

    Set ws = Sheets("Summary of Accounts") 

    Set tblGH = ws.ListObjects("grouphead") 
    Set tblCH = ws.ListObjects("controlhead") 

    For i = 1 To tblGH.DataBodyRange.Rows.Count 
     ComboBox1.AddItem tblGH.DataBodyRange.Cells(i, 1) 
    Next 
End Sub 

'~~> The click event 
Private Sub ComboBox1_Click() 
    Dim r As Long 

    r = ComboBox1.ListIndex 

    If r = -1 Then Exit Sub 

    '~~> Add to txtbox 
    TextBox1.Text = tblGH.DataBodyRange.Cells(r + 1, 2) 

    '~~> Add to 2nd Combo 
    PopulateCombo 
End Sub 

Sub PopulateCombo() 
    ComboBox2.Clear 

    For i = 1 To tblCH.DataBodyRange.Rows.Count 
     If tblCH.DataBodyRange.Cells(i, 1) = TextBox1.Text Then _ 
     ComboBox2.AddItem tblCH.DataBodyRange.Cells(i, 2) 
    Next 
End Sub 
+0

ありがとうシッダース... –

関連する問題