ComboBox.NotInList-Ereignis (Access)
Das NotInList-Ereignis tritt auf, wenn der Benutzer in das Textfeld eines Kombinationsfelds einen Wert eingibt, der nicht in der Liste des Kombinationsfelds enthalten ist.
Syntax
Ausdruck. NotInList (NewData, Response)
Ausdruck Eine Variable, die ein ComboBox-Objekt darstellt.
Parameter
Name | Erforderlich/Optional | Datentyp | Beschreibung |
---|---|---|---|
NewData | Erforderlich | String | Eine Zeichenfolge, die Microsoft Access verwendet, um den Text zu übergeben, den der Benutzer in den Textfeldteil des Kombinationsfelds eingegeben hat, an die Ereignisprozedur. |
Antwort | Erforderlich | Integer | Diese Einstellung gibt an, wie auf das NotInList -Ereignis reagiert wurde. Das Argument Response kann eine der folgenden systeminternen Konstanten sein:
|
HinwBemerkungeneise
Um ein Makro oder eine Ereignisprozedur auszuführen, wenn dieses Ereignis auftritt, legen Sie die OnNotInList-Eigenschaft auf den Namen des Makros oder auf [Ereignisprozedur] fest.
Dieses Ereignis ermöglicht dem Benutzer, einen neuen Wert zum Listenfeld eines Kombinationsfelds hinzuzufügen.
Die LimitToList-Eigenschaft muss auf Ja festgelegt werden, damit das NotInList-Ereignis eintritt.
Das NotInList-Ereignis löst das Error-Ereignis nicht aus.
Das NotInList-Ereignis tritt für Kombinationsfelder ein, deren LimitToList-Eigenschaft auf "Ja" festgelegt ist, und zwar wenn Sie einen Wert eingeben, der nicht in der Liste enthalten ist, und versuchen, zu einem anderen Steuerelement zu wechseln oder den Datensatz zu speichern. Es tritt nach allen Change-Ereignissen für das Kombinationsfeld ein.
Wenn die AutoExpand-Eigenschaft auf Ja festgelegt ist, wählt Access übereinstimmende Werte in der Liste aus, während der Benutzer Zeichen in den Textfeldteil des Kombinationsfelds eingibt. Wenn die vom Benutzer eingegebenen Zeichen mit den ersten Zeichen eines Werts in der Liste übereinstimmen (z. B. gibt der Benutzer "Smith" ein, und "Smithson" ist ein Wert in der Liste), tritt das NotInList-Ereignis nicht auf, wenn der Benutzer zu einem anderen Steuerelement wechselt oder den Datensatz speichert. Die Zeichen, die Access den Vom Benutzer eingegebenen Zeichen (im Beispiel "son") hinzufügt, werden jedoch im Textfeldteil des Kombinationsfelds ausgewählt. Wenn der Benutzer das NotInList-Ereignis in solchen Fällen auslösen möchte (z. B. möchte der Benutzer den neuen Namen "Smith" zur Kombinationsfeldliste hinzufügen), kann der Benutzer nach dem letzten Zeichen im neuen Wert ein Leerzeichen, ein Rücktastenzeichen oder ein Löschen-Zeichen eingeben.
Wenn die LimitToList-Eigenschaft auf Ja festgelegt ist und die Kombinationsfeldliste gelöscht wird, wählt Access übereinstimmende Werte in der Liste aus, während der Benutzer Zeichen in den Textfeldteil des Kombinationsfelds eingibt, auch wenn die AutoExpand-Eigenschaft auf Nein festgelegt ist. Wenn der Benutzer die EINGABETASTE drückt oder zu einem anderen Steuerelement oder Datensatz wechselt, wird der ausgewählte Wert im Kombinationsfeld angezeigt. In diesem Fall wird das NotInList -Ereignis nicht angewendet. Wenn das NotInList-Ereignis trotzdem ausgelöst werden soll, darf der Benutzer die Kombinationsfeldliste nicht öffnen.
Beispiel
Das folgende Beispiel verwendet das Ereignis NotInList, um einen Eintrag zu einem Kombinationsfeld hinzuzufügen.
Um dieses Beispiel auszuprobieren, erstellen Sie ein Kombinationsfeld namens Farben in einem Formular. Legen Sie dessen LimitToList-Eigenschaft auf "Ja" fest. Legen Sie zum Auffüllen des Kombinationsfelds dessen RowSourceType-Eigenschaft auf "Wertliste" fest, und geben Sie eine Liste von durch Semikolons getrennten Werten als Einstellung für die RowSource-Eigenschaft ein. Sie können beispielsweise die folgenden Werte als Einstellung für diese Eigenschaft angeben: Rot; Grün; Blau.
Fügen Sie anschließend dem Formular die nachstehende Ereignisprozedur hinzu. Wechseln Sie zur Formularansicht, und geben Sie im Textfeld des Kombinationsfelds einen neuen Wert ein.
Hinweis
Im vorstehenden Beispiel wird ein Eintrag zu einem ungebundenen Kombinationsfeld hinzugefügt. Wenn Sie einen Eintrag zu einem gebundenen Kombinationsfeld hinzufügen, fügen Sie damit einen Wert zu einem Feld in der zugrunde liegenden Datenquelle hinzu. In den meisten Fällen können Sie einem neuen Datensatz nicht einfach ein Feld hinzufügen. Abhängig von der Struktur der Daten in der Tabelle müssen Sie wahrscheinlich ein oder mehrere Felder hinzufügen, um die Datenanforderungen zu erfüllen. Beispielsweise muss ein neuer Datensatz Werte für alle Felder enthalten, die den Primärschlüssel enthalten. Wenn Sie einem gebundenen Kombinationsfeld Elemente dynamisch hinzufügen müssen, müssen Sie den Benutzer auffordern, Daten für alle erforderlichen Felder einzugeben, den neuen Datensatz zu speichern und dann das Kombinationsfeld erneut abzufragen, um den neuen Wert anzuzeigen.
Private Sub Colors_NotInList(NewData As String, _
Response As Integer)
Dim ctl As Control
' Return Control object that points to combo box.
Set ctl = Me!Colors
' Prompt user to verify they wish to add new value.
If MsgBox("Value is not in list. Add it?", _
vbOKCancel) = vbOK Then
' Set Response argument to indicate that data
' is being added.
Response = acDataErrAdded
' Add string in NewData argument to row source.
ctl.RowSource = ctl.RowSource & ";" & NewData
Else
' If user chooses Cancel, suppress error message
' and undo changes.
Response = acDataErrContinue
ctl.Undo
End If
End Sub
Das folgende Beispiel zeigt, wie Sie das Ereignis NotInList verwenden, um einen Eintrag zu einem gebundenen Kombinationsfeld hinzufügen.
Private Sub cboDept_NotInList(NewData As String, Response As Integer)
Dim oRS As DAO.Recordset, i As Integer, sMsg As String
Dim oRSClone As DAO.Recordset
Response = acDataErrContinue
If MsgBox("Add dept?", vbYesNo) = vbYes Then
Set oRS = CurrentDb.OpenRecordset("tblDepartments", dbOpenDynaset)
oRS.AddNew
oRS.Fields(1) = NewData
For i = 2 To oRS.Fields.Count - 1
sMsg = "What do you want for " & oRS(i).Name
oRS(i).Value = InputBox(sMsg, , oRS(i).DefaultValue)
Next i
oRS.Update
cboDept = Null
cboDept.Requery
DoCmd.OpenTable "tblDepartments", acViewNormal, acReadOnly
DoCmd.GoToRecord acDataTable, "tblDepartments", acLast
End If
End Sub
Das folgende Beispiel zeigt, wie Sie einem gebundenen Kombinationsfeld ein Element hinzufügen.
Private Sub cboMainCategory_NotInList(NewData As String, Response As Integer)
On Error GoTo Error_Handler
Dim intAnswer As Integer
intAnswer = MsgBox("""" & NewData & """ is not an approved category. " & vbcrlf _
& "Do you want to add it now?" _ vbYesNo + vbQuestion, "Invalid Category")
Select Case intAnswer
Case vbYes
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO tlkpCategoryNotInList (Category) "
& _ "Select """ & NewData & """;"
DoCmd.SetWarnings True
Response = acDataErrAdded
Case vbNo
MsgBox "Please select an item from the list.", _
vbExclamation + vbOKOnly, "Invalid Entry"
Response = acDataErrContinue
End Select
Exit_Procedure:
DoCmd.SetWarnings True
Exit Sub
Error_Handler:
MsgBox Err.Number & ", " & Error Description
Resume Exit_Procedure
Resume
End Sub
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für