2017-07-21 15 views
1

複数のオプションを持つ2つのリストボックスを持つユーザーフォームを作成しました。ユーザーフォームのリストボックスをリンクし、ボタンを使用してアクセスするためのvba

  • リストボックス1には、シート結果の列Lの​​位置1が設定されます。
  • リストボックス2には、シート結果の列Mの位置2が入力されます。

「GO !!」と表示されたボタンがあります。

現在、リストボックス1をクリックすると、ドイツ語はLocation1、場所はフィルタリングされます。 同様に、Listbox2を選択した場合(たとえば、場所2、それは場所をフィルターに掛ける)

私は、2つのリストボックスがボタンで相互にリンクされ、アクセスされるようなコードを持っていたいと思います。

たとえば、リストボックス1から「USA」をクリックするとリストボックス2から "ドイツ"、私は "GO"をクリックします。

また、Listbox2を選択していない場合は、listbox1とviceversaの結果のみが表示されます。

ここはコードです、私はlistbox1に使用しています。 2番目のリストボックスのリストボックス名と列番号を同じコードで変更します。

Private Sub DoFilter1() 
    Dim ws As Worksheet 
    Dim strCriteria() As String, i As Integer, arrIdx As Integer 
    ReDim Preserve strCriteria(0 To arrIdx) 

    arrIdx = 0 
    For i = 0 To Me.ListBox1.ListCount - 1 
     If Me.ListBox1.Selected(i) Then 
      ReDim Preserve strCriteria(0 To arrIdx) 
      strCriteria(arrIdx) = Me.ListBox1.List(i) 
      arrIdx = arrIdx + 1 
     End If 
    Next i 

    Set ws = Sheets("Result") 
    If arrIdx = 0 Then 
     ws.UsedRange.AutoFilter 
    Else 
     ws.Range("A:P").AutoFilter Field:=12, Criteria1:=Array(strCriteria), Operator:=xlFilterValues 
    End If 
End Sub 

私は、どのように私はそれらを相互にリンクし、ボタンを介してアクセスできるかを示唆するかもしれません。どんなリードも役に立つでしょう。

これは私のユーザーフォームの外観です。リストからチェックボックスを選択し、[OK]をクリックして結果を表示したいと思います。また、私はチェックボックスで複数のオプションを選択できる必要があります。

screenshot

答えて

2

以下のコードを試してみてください、これが役に立つかもしれません。ありがとう

 With ListBox1 
      For x = 0 To .ListCount - 1 
       If .Selected(x) Then 
        temp = temp & Chr(10) & .List(x) 
       End If 
      Next 
     End With 

     With ListBox2 
      For x = 0 To .ListCount - 1 
       If .Selected(x) Then 
        temp = temp & Chr(10) & .List(x) 
       End If 
      Next 
     End With 

     MsgBox temp & " is selected" 
+0

ボタンでこれを試す必要がありますか? – Jenny

+0

はい、ボタンの中で、Msgboxの代わりに、テキストボックスまたはシート参照に入力することができます。 –

+0

CHEC ListBox1を とするX = 0 .ListCountこのコード ます。Private Sub CommandButton1_Click() - 1 場合.Selected(X)次に TEMP = TEMP&chrです(10)との.List(X) END IF .ListCountに対するX = 0 ListBox2 とで 次にエンド - 1 .Selected(X)次に TEMP = TEMP&chrです(10)との.List(X) END IFで 次にEND IF MsgBox temp& "が選択されている" End Sub –

関連する問題