Я пишу скрипт в Excel VBA, который выполняет поиск в базе данных страны с учетом введенных пользователем критериев. Поиск заканчивается UserForm
, который рассматривает поиск пользователей из трех полей поиска. Помимо формы «Страна», пользователь может также сузить поиск, указав «Категория информации» и «Подкатегорию информации», которой это интересно. Все эти поля: ComboBox
, которые связаны со списками. Некоторыми примерами категорий и подкатегорий являются «География», «Экономические показатели», «Медиа», «Статистика населения» и другие. В зависимости от критериев, предоставленных пользователем, сценарий будет либо возвращать результаты поиска - если есть совпадения с базой данных - или, альтернативно, MsgBox
, сообщая, что поиск не найден. Мне было интересно, исправлен ли текст, представленный в 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
Просьба указать код перед отправкой. спасибо – user1
Я представил код, который я написал. Спасибо. – franciscofcosta