2016-12-08 13 views
0

別のコンボボックスの選択に基づいてコンボボックスに項目を追加しようとしています。MS Accessの別のコンボボックスに基づいてコンボボックスを作成する方法

すべてのダイ番号の一覧を表示する1つのコンボボックスがあります。各ダイ番号には、それに関連付けられた特定の数のキャビティがあります。例示的なダイ1111は4つの空洞を有する。キャビティの数は1から8まで変化します。2番目のコンボボックスに1からXの数字を入力します。ここで、Xはそのダイ番号のキャビティの数です。

私はたぶんこのようなもののようなforループを行うことを考えていました。

Private Sub cmbSection_Change() 

    Dim Cavities 
    Cavities = Me.cmbSection.Column(0) 

    For intI = 1 To (Cavities) 
     cmbCavities.AddItem (intI) 
Next intI 
End Sub 

EDIT: 私が本当に探していますが、ダイがコンボボックスで選択されている場合、各ダイのキャビティの数を参照する方法です。 combobox1.valueはDie#の値を返します。私は、combobox1にcombobox1.cavitiesを参照できる空洞の数と型番と2番目のコンボボックスに項目を追加する方法の両方を返すクエリを入力したので、私は仮定していました。

+0

解決策の問題点は何ですか? – OpiesDad

+0

コンボボックス1のキャビティ列を参照するための正確な構文や、コンボボックスに項目を追加する構文が正確ではありません。あまりVBAに精通していない。上記は機能しません。ほんの少しの擬似コード。 – Azuraith

+1

おそらく 'Me.cmbSection.Column(1)'はコンボボックスの2番目の列を取得します。 – OpiesDad

答えて

0

回答が見つかりました。 forループを使用してリストを作成する独自の方法を使用しました。ここに全体の方法があります。意図どおりに動作します。

Private Sub cmbSection_Change() 

    ' Clears Current Items In Combo Box 
    cmbCavities.RowSource = "" 

    'Declaring and setting proper variables 
    Dim Cavities As Integer 
    Cavities = CInt(Me.cmbSection.Column(1)) 
    Dim intI As Integer 

    ' Loop 
    For intI = 1 To (Cavities) 
     Me.cmbCavities.AddItem (intI) 
    Next intI 

End Sub 
0

コンボボックスでカスケード効果を達成しようとしているようです。これを最初のComboBoxのAfter_Updateに置きます。

Private Sub Form_AfterUpdate() 

Me.SecondComboBoxID.RowSource = "SELECT CavityID, CavityName " _ 
           & "FROM CavityTableName " _ 
           & "WHERE DieID = " & Nz(Me.FirstComboBoxID) _ 
           & "ORDER BY CavityName" 

End Sub 
+0

これはちょっとした助けになりました。正しい方向に私を指摘しました。しかし、私は2番目のコンボボックスに数字1〜Xを記入する必要があります。ここで、Xは空洞の数です。したがって、DieID 100に4つの空洞があるとします。次に、コンボボックス2はオプションとして1,2,3,4を持つ必要があります。 – Azuraith

関連する問題