2016-11-17 5 views
3

VBAスクリプトでIFステートメントを作成しようとしています。最終的に達成したいのは、IFステートメントの実行を前提として、1つのシート(「データベース」)から別のシート(「検索」)にコンテンツをコピーすることです。IFステートメントをORで作成し、Excel VBAで空のセルを作成する方法

スクリプトは、「検索」シートのセル「E5」および「E7」のユーザー入力に依存する変数(「国」、「カテゴリ」)を定義することから始まります。また、その行まで実行するIf文の最終行を定義します。この後

country = Sheets("Search").Range("E5").Value 
category = Sheets("Search").Range("E7").Value 
finalrow = Sheets("Database").Range("A200000").End(xlUp).Row 

を、スクリプトは条件を確立:(セル「国」と「カテゴリ」内)、入力された値が一致した場合私はOR文でIF文に条件を追加したいと思います

For i = 2 To finalrow 
    If Sheets("Database").Cells(i, 1) = country And _ 
    Sheets("Database").Cells(i, 3) = category Then 
     With Sheets("Database") 
     .Range(.Cells(i, 1), .Cells(i, 9)).Copy 
     End With 
     Sheets("Search").Range("B600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats    
    End If     
Next I 

:「データベース」シートのセルの内容によっては、このシート上の値は、「検索」シートにコピーする必要があります。ユーザーが「カテゴリ」セルを塗りつぶさずに、値が1枚のシートから別のシートにコピーされるようにしたいと思います。コードの面では、**の間に部分を追加しましたが、動作しません。

For i = 2 To finalrow 
    If Sheets("Database").Cells(i, 1) = country And _ 
    Sheets("Database").Cells(i, 3) = category **Or category = ""** Then 
     With Sheets("Database") 
     .Range(.Cells(i, 1), .Cells(i, 9)).Copy 
     End With 
     Sheets("Search").Range("B600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats   
    End If     
Next i 

これ以外にもすべてうまくいきます。 あなたは私が間違っていることを知っていますか? ありがとうございました!

+4

はcategory'は、単一の空白文字に等しい '場合は、なぜあなたがチェックしますか? 'Or category =" "'(つまり、カテゴリは空文字列に等しい)という意味ですか? – FDavidov

+1

さらに、 'AND'と' OR'は優先順位が異なりますので、小括弧を使ってチェックが行われている特定の順序を強制するのが最適です。 – FDavidov

+0

はい、そういう意味です。申し訳ありません – franciscofcosta

答えて

2

問題が発生した場合は、Orを完全に避けてください。また、それは空白の使用""IsEmpty(Category)するためにあなたが意味する場合は、文字通り、値としてスペースを探している" "にスペースを入れて:

For i = 2 To finalrow 
    If Category = "" Then 

     If Sheets("Database").Cells(i, 1) = country Then 

      With Sheets("Database") 
      .Range(.Cells(i, 1), .Cells(i, 9)).Copy 
     End With 
      Sheets("Search").Range("B600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats 

     End If 

    Else 

     If Sheets("Database").Cells(i, 1) = country And _ 
     Sheets("Database").Cells(i, 3) = Category Then 

      With Sheets("Database") 
      .Range(.Cells(i, 1), .Cells(i, 9)).Copy 
     End With 
      Sheets("Search").Range("B600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats 

     End If 

Next i 
関連する問題