2017-11-13 13 views
0

私は範囲を通り抜けて最初の条件をテストし、その値をコンボボックスに追加するForループを作成しました。その条件が見つからない場合は、各ループに対して2番目の条件を実行し、その条件に一致するすべての値を追加します。VBA forそれぞれForネストされた

私は以下のコードを書かれているし、それはIF

Dim Keys As Range, cell As Range 


Set Keys = ThisWorkbook.Worksheets("keyHistory").Range("A2:A20000") 

    For Each cell In Keys 
    If cell.Value = WindowsUserName And cell.Offset(0, 4) = 1 Then Me.ComboBox1.AddItem cell.Value 

    Else 
     For Each cell In Keys 
     If cell.Offset(0, 4).Value = 1 And cell.Offset(0, 3) = "" Or cell.Value = "Spare" And cell.Offset(0, 4) = 1 Then Me.ComboBox1.AddItem cell.Value 

    Next cell 

Next cell 
Set Keys = Nothing 
+1

してください([IF-THEN-else文]についての読みhttps://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/if-then-else-ステートメント)。 –

答えて

1

スプリットは、この行はこの

のような2行にあるにもかかわらず、もし

なし

エルス

を語ります

If cell.Value = WindowsUserName And cell.Offset(0, 4) = 1 Then 
    Me.ComboBox1.AddItem cell.Value 

また、End Ifをどこかで使用する必要があります - このようなものは構造体を正しく取得しますが、機能に関しては何をしようとしているのか分かりませんので、推測しました。これは、コンボボックスを埋め第一条件を試験開始時にループが見つかった場合、サブを終了したか、各ループのために走ったし、すべてのマッチした値を加算しながら、私は追加することによって、これを固定興味を持っている人のため

Dim Keys As Range, cell As Range, cell2 as Range 


Set Keys = ThisWorkbook.Worksheets("keyHistory").Range("A2:A20000") 

    For Each cell In Keys 
    If cell.Value = WindowsUserName And cell.Offset(0, 4) = 1 Then 
     Me.ComboBox1.AddItem cell.Value 
    Else 
     For Each cell2 In Keys 
      If cell2.Offset(0, 4).Value = 1 And cell2.Offset(0, 3) = "" Or cell2.Value = "Spare" And cell2.Offset(0, 4) = 1 Then Me.ComboBox1.AddItem cell.Value 
     Next 
    End IF 
Next 
Set Keys = Nothing 
+0

私はそこにelse節が必要ですが、シートを降りて値の一致を探し、WindowsUserNameとcell.Offset(0、4)= 1が見つからない場合にのみ必要です。他の条件の結果のこの状態の結果は両方ではありません – Leighholling

+0

私が持っているものはテーブルとコンボボックスです。最初の条件を確認したい場合は、コンボボックスにその値だけを追加します。この条件が見つからない場合は、コンボボックスに条件2に一致するすべての値を入力します – Leighholling

0

Dim Keys As Range, cell As Range, userName As Variant 


userName = WindowsUserName 

ThisWorkbook.Worksheets("keyHistory").Range("A2").Select 

Do While ActiveCell.Value <> "" 
     If ActiveCell.Value = userName And ActiveCell.Offset(0, 2) <> "" And ActiveCell.Offset(0, 4) = 1 Then 
     Me.ComboBox1.AddItem ActiveCell.Value 
     Set userName = Nothing 
     Exit Sub 

     Else 
     ActiveCell.Offset(1, 0).Select 
     End If 
Loop 


Set Keys = ThisWorkbook.Worksheets("keyHistory").Range("A2:A20000") 

For Each cell In Keys 
If cell.Offset(0, 4).Value = 1 And cell.Offset(0, 3) = "" Or cell.Value = "Spare" And cell.Offset(0, 4) = 1 Then Me.ComboBox1.AddItem cell.Value 
Next cell 


Set Keys = Nothing 

Set userName = Nothing 

Set cell = Nothing 
関連する問題