2011-11-13 4 views
0
If UserForm1.ComboBox1.Value = "One" Then 

    If UserForm1.ComboBox2.Value = "Attentive" Then 

    For Each listItem In ws.Range("D1:D56").SpecialCells(xlConstants) 

    With Me.ListBox1 
    If listItem = "Y" Then .AddItem Sheets("Sheet2").Range("A" & listItem.Row).Value 
    End With 

    Next listItem 

End If 

範囲Aの名前は "1"、 "2"、 "3"のいずれかの値です。範囲Dは "Y"と "N" "チェック値

範囲を確認するD1:範囲Cに「1」の値を持ち、リストボックスに「Y」が入っている列Aの名前を印刷します。

もう一つの項目を追加したいのですが、その範囲を "D57"に変更する必要があります。これを繰り返す必要はなく、手動でコードを変更するのではなく、それ自体を考慮する必要があります。

どうすればいいですか?

+0

マークすることを忘れないでくださいあなたが適切な答えを得た場合に解決されるような質問。そうすることで、あなたの質問が解決されたことを他の開発者に知らせることができます。 – Reafidy

答えて

1

私は値を確認している範囲をの動的にしたいと思っています。

使用できる
For Each listItem In ws.Columns(4).SpecialCells(xlConstants) 

または::特殊な細胞はあなただけ使用することができますusedrangeを使用しているので、ここであなたのコメントに基づいて

For Each listItem In ws.Range("D1", ws.cells(rows.count,"D").end(xlup)).SpecialCells(xlConstants) 

が更新答えです:

Dim rCell As Range 
Dim sValue As String '// Represents your One, Two, Three values 
Dim sAttentive As String '// Represents your attentive value 

sValue = UserForm1.ComboBox1.Value 

If UserForm1.ComboBox2.Value = "Attentive" Then 
    sAttentive = "Y" 
Else 
    sAttentive = "N" 
End If 

For Each rCell In ws.Columns(4).SpecialCells(xlConstants) 
    If rCell.Value = sAttentive And rCell.Offset(, -1) = sValue Then 
     Me.ListBox1.AddItem Sheets("Sheet2").Range("A" & listItem.Row).Value 
    End If 
Next rCell 
+0

コードは機能していますが、値を取り除くこともありません たとえば、コンボボックス2で「2」を選択した場合、注意して「Y」を含む「1」から値を引き出しますカラム。 – user1000730

+0

あなたの質問は少し難しいです。あなたの投稿を編集して、データの例かスクリーンショットを表示できますか?このように要件を明確にすることができれば、解決を手助けすることができます。 – Reafidy

+0

まず最初に "One"、 "Two"、 "Three"を選択する2つのコンボボックスがあります。これらの3つの値はC列にあります。列Dは「Y」および「N」の形式である。だから私は最初のコンボボックスから "1"を選択し、他の "注意深い"列Cの "1"を持つ列Aのすべての名前を表示する必要があります "と注意深い列の" Y "。 – user1000730

関連する問題