2017-07-03 5 views
1

VBAの新機能で、先週自分自身を教えてくれました。私は少し複雑かもしれない仕事を私のために取った。Excel VBAのタイプがIf関数と一致しない

私はA - AEの列を持つ文書を持っています 私はこの文書を読んで、その内容に応じて別々のシートに情報を移す必要があります。 私は、情報を移動する前に2つの要件に一致する必要があるIF文を使用しようとしています。タイプミスマッチのエラーが発生し続けるため、それぞれの個別の要件を満たすことはできますが、両方を同時に行うことはできません。

私は何が間違っているのか分かりません。どんな助けでも大歓迎です。

Sub copyrows() 

    Dim Test As Range, Cell As Object 

    Set Test = Range("G2:Z4000") 'Substitute with the range which includes your True/False values 

    For Each Cell In Test 

     If IsEmpty(Cell) Then 
      Exit Sub 
     End If 

     If Cell.Value = "Refund" And "Commission" Then 
      Cell.EntireRow.Copy 
      Sheet3.Select 'Substitute with your sheet 
      ActiveSheet.Range("A65536").End(xlUp).Select 
      Selection.Offset(1, 0).Select 
      ActiveSheet.Paste 
     End If 

    Next 

End Sub 
+0

なぜ 'Cell'は' Object'ですか?私はそれを代わりに 'Range'にしようとしています。なぜなら、それはあなたがそれを使っているからです。 'Object' *は動作するかもしれませんが、' Range'は私が信じているより優れています。 – BruceWayne

答えて

3

If Cell.Value = "Refund" And "Commission" Then

代わりに読んでください。

If Cell.Value = "Refund" Or Cell.Value = "Commission" Then

をあなたはANDまたはORなどのブール演算子で区切られた各条件で明示的である必要があります。

2

あなたのエラーの理由はすでにしかし、あなたのコードがはるかに最適化されているからである@IanL

することにより、上記の回答に記載されています。

あなたの5行を置き換えることができます。

Cell.EntireRow.Copy 
Sheet3.Select 'Substitute with your sheet 
ActiveSheet.Range("A65536").End(xlUp).Select 
Selection.Offset(1, 0).Select 
ActiveSheet.Paste 

1:ちょうど完全修飾Rangeオブジェクトを使用して、SelectActiveSheet、またはSelectionを使用されていない

Cell.EntireRow.Copy Destination:=Sheet3.Range("A65536").End(xlUp).Offset(1) 

関連する問題