2017-12-14 7 views
0

最初の2つのコンボボックスの選択に応じて3つのリストボックス列を作成しようとしています。ここで2つのコンボボックスに依存するリストボックスVBA

は私の現在のフォームのスクリーンショットです:

enter image description here

私はケースをやって試してみましたが、これは2つのだけのコンボボックス自身で作業していると

は、どのような方法があります言うことはありませんこれをするの?コロラド州や地区、リストボックスを移入しません - 私はコード内でIF文に置かれていると私は、COを選択すると

Private Sub UserForm_Initialize() 

With StateComboBox 


    .AddItem "CO - Colorado" 

End With 
End Sub 
____________________________________________________ 
Private Sub StateComboBox_Change() 

Dim index As Long 
index = StateComboBox.ListIndex 

RoleComboBox.Clear 

Select Case StateComboBox.Value 
    Case Is = "CO - Colorado" 
    With RoleComboBox 
     .AddItem "District" 
     .AddItem "School" 
     .AddItem "Test Administrator" 
    End With 


End Select 
End Sub 
____________________________________________ 
Private Sub PermissionSetList_change() 

If StateComboBox.Value = "CO - Colorado" And RoleComboBox.Value = "District" Then 
Call ColoradoDPermissionSet 
Call ColoradoDRemovePermissions 
Call ColoradoDAddPermissions 
End If 

End Sub 
____________________________________________ 
Sub ColoradoDPermissionSet() 

With PermissionSetList 

.AddItem "Administrator" 
.AddItem "Correction Primary Window" 
.AddItem "Documents - View" 

End With 
End Sub 
________________________________________________________ 
Sub ColoradoDRemovePermissions() 

With RemoveList 

.AddItem "Corrections - Primary" 
.AddItem "Student Transfer Form" 

End With 
End Sub 
_________________________________________________ 
Sub ColoradoDAddPermissions() 

With AddList 

.AddItem "Test Tickets - End Incomplete Test" 
.AddItem "Test Tickets - Invalidate" 
.AddItem "Test Tickets - Regenerate" 

End With 
End Sub 

現在、私はこれを持っています。私はState and Roleを選択するとリストボックス内の特定の値を設定し、StateやRoleを変更すると、別の "Permissions"セットが与えられます。サブの中にリストし、それらを呼び出す。

+1

あなたの質問を明確にしてください もっと。 https://stackoverflow.com/help/mcveを参照してください...あなたは3番目のリストボックスで何をしたいですか? – Grantly

+1

'Call'キーワードを削除しても意味がありません。カンマを削除すると、合法ではありません。 'If​​'ブロックを閉じるために' End If'を追加してください。 –

+0

エラーが発生しますか?それらを追加してください... 'これは動作していません'非常に有用ではない... IF文のリストボックスのTEXT(またはSelectedItem)プロパティにアクセスする必要があるかもしれません – Grantly

答えて

0

私が代わりに私は次のようでしただけでIfステートメントの、これを考え出した、それは私がそれを望んでどのように取り込ま:これはのはのためのより多くのを許可することができる場合ので、より多くを追加するスケーラブルである

Private Sub RoleComboBox_Change() 

Dim index As Long 
index = RoleComboBox.ListIndex 

PermissionSetList.Clear 
RemoveList.Clear 
AddList.Clear 

If StateComboBox.Value = "CO - Colorado" Then 
    Select Case RoleComboBox.Value 
    Case Is = "District" 
     With PermissionSetList 
     Call ColoradoDPermissionSet 
     Call ColoradoDRemovePermissions 
     Call ColoradoDAddPermissions 
     End With 
End Select 
End If 
End Sub 

より多くの選択が行われる。

https://i.imgur.com/lkGDrLs.png

Private Sub RoleComboBox_Change() 

Dim index As Long 
index = RoleComboBox.ListIndex 

PermissionSetList.Clear 
RemoveList.Clear 
AddList.Clear 

If StateComboBox.Value = "AL - Alabama" Then 
With PermissionSetList 
Select Case RoleComboBox.Value 

Case Is = "District" 
    Call WIDADPermissionSet 
    Call AlabamaDRemovePermissions 
    Call AlabamaDAddPermissions 

    Case Is = "School" 
    Call AlabamaSPermissionSet 
    Call AlabamaSRemovePermissions 
     Call AlabamaSAddPermissions 

Case Is = "Test Administrator" 
    Call WIDATPermissionSet 
    Call WIDATRemovePermissions 
    Call WIDATAddPermissions 
    End Select 
End With 
End If 

If StateComboBox.Value = "CO - Colorado" Then 
    With PermissionSetList 
    Select Case RoleComboBox.Value 

    Case Is = "District" 
     Call WIDADPermissionSet 
     Call ColoradoDRemovePermissions 
     Call ColoradoDAddPermissions 

    Case Is = "School" 
     Call ColoradoSPermissionSet 
     Call ColoradoSRemovePermissions 
     Call ColoradoSAddPermissions 

    Case Is = "Test Administrator" 
     Call WIDATPermissionSet 
     Call WIDATRemovePermissions 
     Call WIDATAddPermissions 
    End Select 
    End With 
End If 


End Sub 
+0

あなたのニーズを満たしている場合。複数の州と役割を持つ場合、どの程度スケーラビリティがありますか? – QHarr

+0

もっと多くの画像と今すぐフォームを含む画像に更新されました。これで、トップコンボボックスを使用して、さまざまなプロジェクトを追加し、さまざまなプロジェクトに拡張できます。 –

+0

上記は私が心配していたものです。コードのセクションを何度も再利用しているので、私が考えていた方法でスケーラブルではありません。アプリケーションが遅くなり、コードのデバッグが悪夢になります。 – QHarr

関連する問題