MsgBox с введенной пользователем переменной

Я пишу скрипт в Excel VBA, который выполняет поиск в базе данных страны с учетом введенных пользователем критериев. Поиск исчерпан из UserForm, который учитывает поиск пользователя из трех полей поиска. Помимо «Страны», пользователь также может сузить поиск, указав интересующую его «Категорию информации» и «Подкатегорию информации». Все эти поля ComboBox связаны со списками. Некоторыми примерами категорий и подкатегорий являются «География», «Экономические показатели», «СМИ», «Статистика населения» и другие. В зависимости от критериев, предоставленных пользователем, скрипт либо вернет результаты поиска — если есть какие-либо совпадения с базой данных — либо, альтернативно, MsgBox уведомит, что поиск не нашел совпадений. Мне было интересно, является ли текст, представленный в MsgBox, фиксированным или он может зависеть от переменных, введенных пользователем.

Для пояснения возьмем в качестве примера пользователя, который ищет информацию о США и выполняет поиск только с этим критерием. База данных содержит информацию о США и возвращает всю доступную информацию. Несмотря на все данные, пользователь конкретно хочет получить информацию о СМИ в США и повторяет поиск по этим двум критериям. Однако в базе нет информации конкретно по США и СМИ. В этом случае сценарий возвращает MsgBox, который, согласно моему коду на данный момент, который работает нормально, просто говорит, что «В базе данных нет информации, соответствующей этому поиску».

У меня вопрос: может ли MsgBox вернуть сообщение, зависящее от пользовательского поиска, то есть, в примере, вернуть что-то вроде «Нет информации о СМИ в США»? Большое спасибо за Вашу помощь.

Это код, который запускает поиск:

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

person franciscofcosta    schedule 22.11.2016    source источник
comment
Пожалуйста, предоставьте попытку кода перед публикацией. Благодарность   -  person user1    schedule 22.11.2016
comment
Я предоставил код, который я написал. Спасибо.   -  person franciscofcosta    schedule 22.11.2016


Ответы (1)


Вы управляете 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, чтобы правильно их обработать. Здесь я просто использую заданную фразу и меняю жестко заданные значения с параметрами.

person Victor Moraes    schedule 22.11.2016
comment
Я очень рад это слышать. Ваше здоровье - person Victor Moraes; 22.11.2016