Evento ComboBox.NotInList (Access)
O evento NotInList ocorre quando o usuário insere um valor na parte da caixa de texto de uma caixa de combinação que não se encontra na lista da caixa de combinação.
Sintaxe
expressão. NotInList (NewData, Response)
Expressão Uma variável que representa um objeto ComboBox .
Parâmetros
Nome | Obrigatório/Opcional | Tipo de dados | Descrição |
---|---|---|---|
NewData | Obrigatório | String | Uma cadeia de caracteres que o Microsoft Access usa para passar o texto que o usuário inseriu na parte da caixa de texto da caixa de combinação para o procedimento de evento. |
Response | Obrigatório | Integer | A configuração indica como o evento NotInList foi tratado. O argumento Response pode ser uma das seguintes constantes intrínsecas:
|
Comentários
Para executar uma macro ou procedimento de evento quando esse evento ocorrer, defina a propriedade OnNotInList como o nome da macro ou para [Procedimento de Evento].
Esse evento permite que o usuário adicione um novo valor à lista da caixa de combinação.
A propriedade LimitToList deve ser definida como Sim para que o evento NotInList ocorra.
O evento NotInList não dispara o evento Error .
O evento NotInList ocorre para caixas de combinação cuja propriedade LimitToList está definida como Sim, depois de você inserir um valor que não está na lista e tentar ir para outro controle ou salvar o registro. O evento ocorre após todos os eventos Change da caixa de combinação.
Quando a propriedade AutoExpand é definida como Sim, o Access seleciona valores correspondentes na lista à medida que o usuário insere caracteres na parte da caixa de texto da caixa de combinação. Se os caracteres que os tipos de usuário correspondem aos primeiros caracteres de um valor na lista (por exemplo, o usuário digita "Smith" e "Smithson" é um valor na lista), o evento NotInList não ocorrerá quando o usuário se mover para outro controle ou salvar o registro. No entanto, os caracteres que o Access adiciona aos caracteres que o usuário digita (no exemplo , "filho") são selecionados na parte da caixa de texto da caixa de combinação. Se o usuário quiser que o evento NotInList seja acionado nesses casos (por exemplo, o usuário deseja adicionar o novo nome "Smith" à lista de caixas de combinação), o usuário poderá inserir um caractere Space, Backspace ou Delete após o último caractere no novo valor.
Quando a propriedade LimitToList é definida como Sim e a lista de caixas de combinação é descartada, o Access seleciona valores correspondentes na lista à medida que o usuário insere caracteres na parte da caixa de texto da caixa de combinação, mesmo que a propriedade AutoExpand seja definida como No. Se o usuário pressionar Enter ou mover para outro controle ou registro, o valor selecionado será exibido na caixa de combinação. Nesse caso, o evento NotInList não será disparado. Para permitir que o evento NotInList seja disparado, o usuário não deverá suspender a lista da caixa de combinação.
Exemplo
O exemplo a seguir usa o evento NotInList para adicionar um item a uma caixa de combinação.
Para testar esse exemplo, crie uma caixa de combinação chamada Cores em um formulário. Defina a propriedade LimitToList da caixa de combinação como Sim. Para popular a caixa de combinação, defina a propriedade RowSourceType dela como Value List e forneça uma lista de valores separados por ponto-e-vírgula como a configuração da propriedade RowSource. Por exemplo, você pode fornecer os seguintes valores como a configuração para esta propriedade: Vermelho; Verde; Azul.
Em seguida, adicione o seguinte procedimento de evento ao formulário. Passe para o modo Formulário e insira um novo valor na parte de texto da caixa de combinação.
Observação
[!OBSERVAçãO] This example adds an item to an unbound combo box. When you add an item to a bound combo box, you add a value to a field in the underlying data source. Na maioria dos casos, você não pode simplesmente adicionar um campo em um novo registro; dependendo da estrutura de dados na tabela, você provavelmente precisará adicionar um ou mais campos para atender aos requisitos de dados. Por exemplo, um novo registro deve incluir valores para todos os campos que compõem a chave primária. Se você precisar adicionar itens a uma caixa de combinação vinculada dinamicamente, solicitará que o usuário insira dados para todos os campos necessários, salve o novo registro e, em seguida, reensofa a caixa de combinação para exibir o novo valor.
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
O exemplo a seguir mostra como usar o evento NotInList para adicionar um item a uma caixa de combinação acoplada.
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
O exemplo a seguir mostra como adicionar um item a uma caixa de combinação associada.
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
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.