我正在編寫一個運行數據庫搜索的腳本。它通過一個IF語句來實現,該語句具有多個條件,這些條件取決於三個不同字段(「國家」,「類別」和「子類別」)中的用戶輸入。我之前已經定義了這些。If Excel ElseIF Statement in Excel VBA
由三個字段的用戶的輸入的不同組合會產生不同的結果。因此,舉例來說,如果用戶沒有提供一個「國家」,那麼搜索將無法運行和錯誤信息會彈出如下:
For i = 2 To finalrow
If country = "" Then
Sheets("Results").Range("B10:J200000").Clear
MsgBox "You must select a country in order to search the database. Please do so in the drop-down list provided."
Sheets("Results").Range("D5").ClearContents
Sheets("Results").Range("D6").ClearContents
Sheets("Results").Range("D7").ClearContents
Exit Sub
如果用戶提供一個國家,那麼,搜索運行,顯示出更多或更少的結果取決於用戶具有或不具有還提供了一種類別和子類別:
ElseIf Sheets("Database").Cells(i, 1) = country And _
(Sheets("Database").Cells(i, 3) = category Or category = "") And _
(Sheets("Database").Cells(i, 4) = subcategory Or subcategory = "") Then
With Sheets("Database")
.Range("A1:I1").Copy
End With
Sheets("Results").Range("B10:J10").PasteSpecial
With Sheets("Database")
.Range(.Cells(i, 1), .Cells(i, 9)).Copy
End With
Sheets("Results").Range("B600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
End If
Next I
這是工作的所有細。
我現在想添加更多條件IF語句的另外兩個情況:
1 - 用戶提供不存在於數據庫中的國家。我寫了這個如下:
ElseIf Sheets("Database").Cells(i, 1) <> country Then
MsgBox "There is no such country in the database. Please search for information relating to another country."
Sheets("Results").Range("D5").ClearContents
Sheets("Results").Range("D6").ClearContents
Sheets("Results").Range("D7").ClearContents
Exit Sub
2:用戶提供一個國家和數據庫的組合,不存在於數據庫中。我寫了這個如下:
ElseIf (Sheets("Database").Cells(i, 1) = country) And _
(Sheets("Database").Cells(i, 3) <> category) Then
MsgBox "There are no records in the database that match your search criteria. Please try another search"
Sheets("Results").Range("D5").ClearContents
Sheets("Results").Range("D6").ClearContents
Sheets("Results").Range("D7").ClearContents
Exit Sub
正如我所說的,沒有這兩個附加ElseIf
語句,腳本運行正常,並從數據庫檢索的結果。然而,當我加入這兩個語句,只從第三If
聲明MsgBox
(讀「有一個在數據庫中沒有這樣的國家,請搜索與其他國家的信息。」)顯示。
整個代碼,與另外兩個聲明,如下:
For i = 2 To finalrow
If country = "" Then
Sheets("Results").Range("B10:J200000").Clear
MsgBox "You must select a country in order to search the database. Please do so in the drop-down list provided."
Sheets("Results").Range("D5").ClearContents
Sheets("Results").Range("D6").ClearContents
Sheets("Results").Range("D7").ClearContents
Exit Sub
ElseIf Sheets("Database").Cells(i, 1) = country And _
(Sheets("Database").Cells(i, 3) = category Or category = "") And _
(Sheets("Database").Cells(i, 4) = subcategory Or subcategory = "") Then
With Sheets("Database")
.Range("A1:I1").Copy
End With
Sheets("Results").Range("B10:J10").PasteSpecial
With Sheets("Database")
.Range(.Cells(i, 1), .Cells(i, 9)).Copy
End With
Sheets("Results").Range("B600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
Me.Hide
ElseIf Sheets("Database").Cells(i, 1) <> country Then
MsgBox "There is no such country in the database. Please search for information relating to another country."
Sheets("Results").Range("D5").ClearContents
Sheets("Results").Range("D6").ClearContents
Sheets("Results").Range("D7").ClearContents
Exit Sub
ElseIf (Sheets("Database").Cells(i, 1) = country) And _
(Sheets("Database").Cells(i, 3) <> category) Then
MsgBox "There are no records in the database that match your search criteria. Please try another search"
Sheets("Results").Range("D5").ClearContents
Sheets("Results").Range("D6").ClearContents
Sheets("Results").Range("D7").ClearContents
Exit Sub
End If
Next I
你有什麼,我可能是做錯了任何想法時,我添加了兩個額外的語句? 謝謝你的幫助。
你在哪裏啓動'country'的代碼在哪裏?似乎這只是一個包含一個國家的「刺痛」。如果這是正確的,那麼你在代碼中只允許不超過**一個**國家:'ElseIf Sheets(「Database」)。Cells(i,1)= country And _'。因此,'Cells(i,1)'必須包含'country'中的內容,否則'If'語句將不起作用(尤其是因爲它在邏輯上與'AND'結合在一起)。因此,你將(應該)總是得到'沒有這樣的國家'的錯誤信息。 – Ralph
我沒有把它包含在問題中,因爲我認爲這隻會令人困惑。這裏是: 'country =表格(「結果」)。範圍(「D5」)。值 category =表格(「結果」)。範圍(「D6」)。值 子類別=表格(「結果」 ).Range(「D7」)。值 finalrow = Sheets(「Database」)。Range(「A200000」)。End(xlUp).Row' – franciscofcosta
就像我想的那樣。因此,基本上'country'獲得'Sheets(「Results」)的值。Range(「D5」)。Value如果這個單元格包含'USA',那麼你的行'ElseIf Sheets(「Database」)。 ,1)=國家和_'比較'表格(「數據庫」)。單元格(i,1)'到'USA'。如果它們相等,那麼你的'ElseIf'可以工作(如果其他'if'情況得到滿足的話)。然而,只有「美國」纔會被接受。以下將不**工作:'_USA','美國','美國','美國'等。此外,只有'美國'被接受(**否**其他國家)。 – Ralph