带有用户输入变量的 MsgBox
MsgBox with user-inputted variable
我正在 Excel VBA 中编写一个脚本,该脚本根据用户输入的条件在国家/地区数据库中运行搜索。搜索是 运行 out of a UserForm
,它考虑了来自三个搜索字段的用户搜索。除了 "Country",用户还可以通过提及它感兴趣的 "Category of Information" 和 "Subcategory of Information" 来缩小搜索范围。所有这些字段都是 ComboBox
链接到列出。类别和子类别的一些示例包括 "Geography"、"Economic Indicators"、"Media"、"Population Statistics" 等。
根据用户提供的条件,脚本将 return 搜索结果 - 如果与数据库有任何匹配 - 或者 MsgBox
建议搜索未找到匹配项。我想知道 MsgBox
中显示的文本是固定的还是取决于用户输入的变量。
为了清楚起见,让我们举个例子,一位用户正在寻找有关美国的信息,并在仅填充此条件的情况下运行搜索。该数据库包含有关美国的信息和 return 的所有可用信息。尽管有所有数据,用户还是特别想要有关美国媒体的信息,并使用这两个条件重复搜索。但是,该数据库没有专门针对美国和媒体的信息。在这种情况下,脚本 return 是一个 MsgBox
,根据我目前的代码 - 工作正常 - 只是说 "The database has no information that matches this search".
我的问题是:MsgBox
return 能否显示一条依赖于用户搜索的消息,即,在示例中,return 类似于 "There is no information regarding Media in the US"?非常感谢您的帮助。
这是运行搜索的代码:
country = Sheets("Results").Range("D5").Value
Category = Sheets("Results").Range("D6").Value
Subcategory = Sheets("Results").Range("D7").Value
finalrow = Sheets("Database").Range("A200000").End(xlUp).Row
For i = 2 To finalrow
'If the country field is left empty
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
'If the country field is filled in and there results from the search made
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
'Copy the headers of the table
With Sheets("Database")
.Range("A1:I1").Copy
End With
Sheets("Results").Range("B10:J10").PasteSpecial
'Copy the rows of the table that match the search query
With Sheets("Database")
.Range(.Cells(i, 1), .Cells(i, 9)).Copy
End With
Sheets("Results").Range("B20000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
ElseIf Sheets("Database").Cells(i, 1) = country And _
(Sheets("Database").Cells(i, 3) <> Category) Then
MsgBox "The database has no information that matches this search."
Sheets("Results").Range("D5").ClearContents
Sheets("Results").Range("D6").ClearContents
Sheets("Results").Range("D7").ClearContents
Exit Sub
End If
Next i
您可以控制 MsgBox
,因此您需要做的就是正确处理您的逻辑以相应地更改消息。
一个非常简单的方法就是简单地更改这一行:
MsgBox "The database has no information that matches this search."
使用变量的值,就像您提到的那样:
MsgBox "There is no information regarding " & Category & " in the " & country & "."
假设在搜索时 Category
包含 "Media" 并且 country
包含 "US",这将按您的预期输出 "There is no information regarding Media in the US."。
如果您希望根据用户输入的确切值为消息设置不同的模式,则必须使用更多 If...Then...Else
才能正确处理它们。在这里,我只是使用一个固定的短语并使用参数更改硬编码值。
我正在 Excel VBA 中编写一个脚本,该脚本根据用户输入的条件在国家/地区数据库中运行搜索。搜索是 运行 out of a UserForm
,它考虑了来自三个搜索字段的用户搜索。除了 "Country",用户还可以通过提及它感兴趣的 "Category of Information" 和 "Subcategory of Information" 来缩小搜索范围。所有这些字段都是 ComboBox
链接到列出。类别和子类别的一些示例包括 "Geography"、"Economic Indicators"、"Media"、"Population Statistics" 等。
根据用户提供的条件,脚本将 return 搜索结果 - 如果与数据库有任何匹配 - 或者 MsgBox
建议搜索未找到匹配项。我想知道 MsgBox
中显示的文本是固定的还是取决于用户输入的变量。
为了清楚起见,让我们举个例子,一位用户正在寻找有关美国的信息,并在仅填充此条件的情况下运行搜索。该数据库包含有关美国的信息和 return 的所有可用信息。尽管有所有数据,用户还是特别想要有关美国媒体的信息,并使用这两个条件重复搜索。但是,该数据库没有专门针对美国和媒体的信息。在这种情况下,脚本 return 是一个 MsgBox
,根据我目前的代码 - 工作正常 - 只是说 "The database has no information that matches this search".
我的问题是:MsgBox
return 能否显示一条依赖于用户搜索的消息,即,在示例中,return 类似于 "There is no information regarding Media in the US"?非常感谢您的帮助。
这是运行搜索的代码:
country = Sheets("Results").Range("D5").Value
Category = Sheets("Results").Range("D6").Value
Subcategory = Sheets("Results").Range("D7").Value
finalrow = Sheets("Database").Range("A200000").End(xlUp).Row
For i = 2 To finalrow
'If the country field is left empty
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
'If the country field is filled in and there results from the search made
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
'Copy the headers of the table
With Sheets("Database")
.Range("A1:I1").Copy
End With
Sheets("Results").Range("B10:J10").PasteSpecial
'Copy the rows of the table that match the search query
With Sheets("Database")
.Range(.Cells(i, 1), .Cells(i, 9)).Copy
End With
Sheets("Results").Range("B20000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
ElseIf Sheets("Database").Cells(i, 1) = country And _
(Sheets("Database").Cells(i, 3) <> Category) Then
MsgBox "The database has no information that matches this search."
Sheets("Results").Range("D5").ClearContents
Sheets("Results").Range("D6").ClearContents
Sheets("Results").Range("D7").ClearContents
Exit Sub
End If
Next i
您可以控制 MsgBox
,因此您需要做的就是正确处理您的逻辑以相应地更改消息。
一个非常简单的方法就是简单地更改这一行:
MsgBox "The database has no information that matches this search."
使用变量的值,就像您提到的那样:
MsgBox "There is no information regarding " & Category & " in the " & country & "."
假设在搜索时 Category
包含 "Media" 并且 country
包含 "US",这将按您的预期输出 "There is no information regarding Media in the US."。
如果您希望根据用户输入的确切值为消息设置不同的模式,则必须使用更多 If...Then...Else
才能正确处理它们。在这里,我只是使用一个固定的短语并使用参数更改硬编码值。