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
これ以外にもすべてうまくいきます。 あなたは私が間違っていることを知っていますか? ありがとうございました!
はcategory'は、単一の空白文字に等しい '場合は、なぜあなたがチェックしますか? 'Or category =" "'(つまり、カテゴリは空文字列に等しい)という意味ですか? – FDavidov
さらに、 'AND'と' OR'は優先順位が異なりますので、小括弧を使ってチェックが行われている特定の順序を強制するのが最適です。 – FDavidov
はい、そういう意味です。申し訳ありません – franciscofcosta