Ich schreibe ein Skript in Excel VBA, das eine Suche in einer Landesdatenbank unter Berücksichtigung der vom Benutzer eingegebenen Kriterien ausführt. Die Suche läuft von einer UserForm
aus, die die Benutzersuche aus drei Suchfeldern betrachtet. Neben dem "Land" kann der Nutzer die Suche auch einschränken, indem er die "Kategorie der Informationen" und die "Unterkategorie der Informationen", an denen er interessiert ist, erwähnt. Alle diese Felder sind ComboBox
, die mit Listen verknüpft sind. Einige Beispiele für Kategorien und Unterkategorien sind unter anderem "Geographie", "Wirtschaftsindikatoren", "Medien", "Bevölkerungsstatistik". Je nach den vom Benutzer angegebenen Kriterien gibt das Skript entweder die Suchergebnisse zurück - wenn Übereinstimmungen mit der Datenbank vorliegen - oder alternativ eine MsgBox
, die darauf hinweist, dass die Suche keine Übereinstimmungen gefunden hat. Ich habe mich gefragt, ob der in der MsgBox
präsentierte Text fest ist oder ob er von den vom Benutzer eingegebenen Variablen abhängen kann.MsgBox mit vom Benutzer eingegebener Variable
Zur Klarstellung nehmen wir als Beispiel einen Benutzer, der Informationen über die USA sucht und eine Suche nur mit diesen Kriterien durchführt. Die Datenbank enthält Informationen zu den USA und gibt alle verfügbaren Informationen zurück. Trotz aller Daten möchte der Nutzer Informationen über Medien in den USA und wiederholt die Suche mit diesen beiden Kriterien. Die Datenbank enthält jedoch keine Informationen speziell zu den USA und den Medien. In diesem Fall gibt das Skript eine MsgBox
zurück, die laut meinem Code im Moment - was gut funktioniert - nur sagt: "Die Datenbank hat keine Informationen, die mit dieser Suche übereinstimmen".
Meine Frage ist: kann die MsgBox
eine Nachricht zurückgeben, die von der Benutzersuche abhängig ist, d. H. In dem Beispiel etwas wie "Es gibt keine Informationen in Bezug auf Medien in den USA"? Vielen Dank für Ihre Hilfe.
Dies ist der Code, der die Suche ausgeführt wird:
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
Bitte versuchen Sie Code vor dem Posten. danke – user1
Ich habe den Code, den ich geschrieben habe, zur Verfügung gestellt. Vielen Dank. – franciscofcosta