MsgBox与用户输入的变量

时间:2016-11-22 15:15:46

标签: excel vba msgbox

我正在Excel VBA中编写一个脚本,该脚本在考虑用户输入标准的国家/地区数据库中运行搜索。搜索用尽UserForm,用于从三个搜索字段中搜索用户搜索。除了#34; Country"之外,用户还可以通过提及"信息类别"来缩小搜索范围。以及"信息的子类别"它感兴趣。所有这些字段都是ComboBox链接到列表。类别和子类别的一些示例是"地理","经济指标","媒体","人口统计"等等。 根据用户提供的条件,脚本将返回搜索结果 - 如果与数据库存在任何匹配 - 或者,MsgBox建议搜索未找到匹配项。我想知道MsgBox中提供的文本是否固定,或者它是否依赖于用户输入的变量。

作为一个例子,澄清让我们看一下正在寻找有关美国的信息的用户,并仅在填写此标准的情况下运行搜索。该数据库包含有关美国的信息,并返回所有可用信息。尽管有所有数据,但用户特别需要有关美国媒体的信息,并使用这两个标准重复搜索。但是,该数据库没有专门针对美国和媒体的信息。在这种情况下,脚本返回MsgBox,根据我目前的代码 - 工作正常 - 只是说&#34;数据库没有与此搜索相匹配的信息&#34;。< / p>

我的问题是:MsgBox能否返回依赖于用户搜索的消息,即,在示例中,返回类似于&#34的内容;在美国没有关于媒体的信息&#34; ?非常感谢你的帮助。

这是运行搜索的代码:

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

1 个答案:

答案 0 :(得分:2)

您可以控制MsgBox,因此您需要做的就是正确处理逻辑以相应地更改消息。

一个非常简单的方法就是简单地改变这一行:

MsgBox "The database has no information that matches this search."

使用您提到的变量值:

MsgBox "There is no information regarding " & Category & " in the " & country & "."

假设Category包含“媒体”且country在搜索时包含“美国”,则会输出“此处没有关于美国媒体的信息”。正如你所料。

如果您希望根据用户输入的确切值为邮件设置不同的模式,则必须使用更多If...Then...Else来正确处理它们。在这里,我只是使用一个设置短语并用参数更改硬编码值。