1

データをチェックするフィルター条件を作成しようとしています。一致する場合はデータを出力します。次のものがあり、型の不一致エラーが発生します。cTest用。次のことも試しました(引用符なし-しかし、falseを返します):cTest =(InStr(getName(iVar)、a1)> 0)

フィルター条件を作成する簡単な方法はありますか。

フィールド a1、a2、および a3 が満たされている場合、基準は、値を返す前にそこにすべてが含まれていることを確認する必要があります。

  Dim cTest As Variant

If a1 <> "" Or a2 <> "" Or a3 <> "" Then
If a1 <> "" Then
  If a2 <> "" Then
   If a3 <> "" Then
   'Value entered in 1,2,3
    cTest = "(InStr(getName(iVar), a1) > 0) And (InStr(getName(iVar), a2) > 0) And (InStr(getName(iVar), a3) > 0)"
    End If
    ' Value entered in 1,2
    cTest = "(InStr(getName(iVar), a1) > 0) And (InStr(getName(iVar), a2) > 0)"
      End If
      '(Value entered in 1 only
   cTest = "(InStr(getName(iVar), a1) > 0)"
ElseIf a2 <> "" Then
  If a3 <> "" Then
    'Value entered in 2,3
    MsgBox ("2nd, 3rd value entered")
  End If
   ' Value entered in 2 only
ElseIf a3 <> "" Then
    'Value entered in 3 only
     MsgBox ("3rd value entered")
Else
     ' no value entered
     MsgBox ("no value entered")
End If
End If

For iVar = 1 To Phrases.MaxIndex()


        If (cTest) Then
        'We want this one
        .Cells(irow, 1).Value = getName(iVar)
        irow = irow + 1
      End If
    Next iVar

  End With
4

1 に答える 1

0

AND & OR 条件の単純な結合を使用するのはどうですか?

Sub testing()

    If ((a1 <> "" And InStr(getName(iVar), a1) > 0) Or a1 = "") And _
    ((a2 <> "" And InStr(getName(iVar), a2) > 0) Or a2 = "") And _
    ((a3 <> "" And InStr(getName(iVar), a2) > 0) Or a3 = "") Then
        ' the wanted one
    End If

End Sub
于 2012-10-10T09:44:29.203 に答える