Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 que o Microsoft Access utiliza para transmitir o texto que o utilizador introduziu na parte da caixa de texto da caixa de combinação para o procedimento do 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 um procedimento de macro ou evento quando este evento ocorre, defina a propriedade OnNotInList para 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 tem de ser definida como Sim para que o evento NotInList ocorra.
O evento NotInList não aciona o evento Erro .
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 está definida como Sim, o Access seleciona valores correspondentes na lista à medida que o utilizador introduz carateres na parte da caixa de texto da caixa de combinação. Se os carateres que os tipos de utilizador correspondem aos primeiros carateres de um valor na lista (por exemplo, os tipos de utilizador "Smith" e "Smithson" forem um valor na lista), o evento NotInList não ocorrerá quando o utilizador mudar para outro controlo ou guardar o registo. No entanto, os carateres que o Access adiciona aos carateres que o utilizador escreve (no exemplo, "filho") estão selecionados na parte da caixa de texto da caixa de combinação. Se o utilizador quiser que o evento NotInList seja acionado nesses casos (por exemplo, o utilizador quer adicionar o novo nome "Smith" à lista de caixas de combinação), o utilizador pode introduzir um espaço, retrocesso ou eliminar caráter após o último caráter no novo valor.
Quando a propriedade LimitToList está definida como Sim e a lista de caixas de combinação é removida, o Access seleciona valores correspondentes na lista à medida que o utilizador introduz carateres na parte da caixa de texto da caixa de combinação, mesmo que a propriedade AutoExpand esteja definida como Não. Se o utilizador premir Enter ou mudar para outro controlo ou registo, o valor selecionado é apresentado 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, pode fornecer os seguintes valores como a definição para esta propriedade: Vermelho; Verde; Azul, 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, não pode simplesmente adicionar um campo num novo registo; consoante a estrutura dos dados na tabela, provavelmente terá de adicionar um ou mais campos para cumprir os requisitos de dados. Por exemplo, um novo registo tem de incluir valores para quaisquer campos que incluam a chave primária. Se precisar de adicionar itens a uma caixa de combinação vinculada dinamicamente, tem de pedir ao utilizador para introduzir dados para todos os campos necessários, guardar o novo registo e, em seguida, voltar a consultar a caixa de combinação para apresentar 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.