Notifications
Clear all

Apagar dados da combobox

19 Posts
2 Usuários
0 Reactions
6,281 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Private Sub CbCidade_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))

Set b = Sheets("BDAlimentadores")

Set c = b.Range("A1:A65536").Find(CbCidade.Value, lookat:=xlWhole)

If Not c Is Nothing Then
If CStr(UCase(CbCidade.Value)) = CStr(UCase(c.Cells)) Then

Else
GoTo Alerta
End If
Else
GoTo Alerta
End If
Exit Sub
Alerta:
MsgBox "Digite Cidade Válida , " & Chr(13) & Chr(13) & " OU" & Chr(13) & Chr(13) & "SELECIONE NA CAIXA", vbOKOnly + vbCritical + vbInformation, ".:: [email protected] ::."
CbCidade.Text = ""
CbCidade.SelStart = 0
End Sub

estou tentanto usar este codigo, dentre outras coisas o que ele "tenta" fazer é ;ir auto completando ,mas se digitar algo que não esteja na lista em BDAlimentadores , dar uma msg que houve um erro e ; CbCidade.Text = ""; apagar o que foi escrito, mas sempre sobra uma letra na combo, alguem pode me dizer como resolver por favor?

 
Postado : 03/04/2012 9:37 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Claudinei, anexe um exemplo reduzido e compactado, fica mais fácil analisar com o modelo pronto do que recriar um outro.

[]s

 
Postado : 03/04/2012 10:23 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!
Além da postagem do mauro...

seria um comando.

ComboBox1.Clear
Me.comboBoxName.RowSource = ""

Att

 
Postado : 03/04/2012 11:41 am
(@arthurdiegoo)
Posts: 99
Estimable Member
 

Alexandre, o segundo código perderia a conexão com a planilha de database, não?

O erro da primeira letra é proveniente do evento.

Caso as ajudas dos mestres acima não sejam suficientes, tente usar o comando no evento AfterUpdate da combobox:

Sub CbCidade_AfterUpdate
Alerta:
MsgBox "Digite Cidade Válida , " & Chr(13) & Chr(13) & " OU" & Chr(13) & Chr(13) & "SELECIONE NA CAIXA", vbOKOnly + vbCritical + vbInformation, ".:: claudineicemig@hotmail.com ::."
CbCidade.Text = ""
cbcidade.setfocus
End Sub

Att.

 
Postado : 03/04/2012 11:55 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Tá ai Mauro;
as outras sugestoes Clear etc , não resolveram

 
Postado : 10/04/2012 6:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

O Problema é o seguinte:
abrindo o arquivo clicando em Inserir_Planilhas , chama-se um form com 3 combobox (que buscam seus valores na plan oculta BdAlimentadores) e 2 textbox,

1- Nos Combobox quando se clica na "setinha" para abrir a lista de escolha não aparece valor algum

2- No combobox 1(POLO) a escolha é de : ALFENAS , ITAJUBA ,LAVRAS , POUSO ALEGRE, TRES CORAÇOES , VARGINHA ; que só aparecem na lista ,apos digitar uma primeira letra ,independente de ser inicial destas cidades , na segunda letra a ser digitada se não for da sequencia dos nomes da cidade mostra; mostra que esta errado atraves de msgbox.
3- No combobox 2 (Cidade) tambem não "carrega a lista" sem antes digitar algo ,mesmo se escolher uma letra que seja inicial da cidade ,dá msgbox de erro e a partir daqui a lista é "carregada"

4- No combobox 4 mesmo erro do combobox 3

Agora acho que tá no final deste raio de planilha.

 
Postado : 12/04/2012 11:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Claudinei,
O Formulario é iniciado sem "carregar" nenhum controle, motivo pelo qual não aparece nada ao clicar na setinha.E só há "comandos" nos eventos KeyPress.
vc deve ao iniciar o form, carregar os combos que precisa.
O Combo cidade deve ser "carregado" no evento onchange do combo Polo (já que varia de acordo com a escolha).

Exemplo:
Carregar o Combo Polo ao iniciar

Private Sub UserForm_Initialize()
Dim rnLista, rnCell As Range
Dim wkData As Worksheet
Set wkData = ThisWorkbook.Sheets("BDAlimentadores")
Set rnLista = wkData.Range("C3:C8")
    For Each rnCell In rnLista
        CbPOLO.AddItem rnCell.Value
    Next rnCell
  Set rnLista = wkData.Range("B1:B1")

For Each rnCell In rnLista
    CbCidade.AddItem rnCell.Value
 Next rnCell
End Sub
 
Postado : 12/04/2012 1:46 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Poderia por favor comentar o código ? Para que eu o entenda e consiga adapta-lo às minhas necessidades .
Por hora muito obrigado .

 
Postado : 14/04/2012 5:33 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom, o codigo é parte do que vc tem em um de seus eventos de modificação das combos (e eu o utilizei como exemplo)mas vamos lá; veja se lhe auxilia:

Private Sub UserForm_Initialize()
'Definição e declaração de variaveis
Dim rnLista, rnCell As Range
Dim wkData As Worksheet
'Declara a planilha BDAlimentadores em uma variavel, para simplificar o acesso à mesma
    Set wkData = ThisWorkbook.Sheets("BDAlimentadores")
' "Nomeia" a range com que irá trabalhar
    Set rnLista = wkData.Range("C3:C8")
 'Inicia o loop para incluir os valores na range   no combo    Polo
         For Each rnCell In rnLista
                CbPOLO.AddItem rnCell.Value
        Next rnCell
' "Renomeia" a range utilizada
Set rnLista = wkData.Range("B1:B1")

'Loop para incluir os dados na combo Cicade
        For Each rnCell In rnLista
            CbCidade.AddItem rnCell.Value
        Next rnCell
End Sub
 
Postado : 15/04/2012 7:26 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

ok , acho que entendi o codigo,
nao consigo é fazer com que quando digito por exemplo a letra W ,que nao existe nem um dado iniciado com W , de erro , apague o W e fique "pronto para digitar novamente ,
1- se digitar W e der enter vai para a proxima combo sem dar erro
2- se digitar W duas vezes ou 2 outras letras quaisquer que não sejam iniciais do dado da combo ai dá o erro , porem apaga somente a segunda letra ,
usei:
NomeDaCombo.setfocus
NomeDaCombo.clear
CbCidade.SelStart = 0
NomeDaCombo.text = " "
mais nada apaga a primeira letra

Como resolver?

 
Postado : 15/04/2012 9:26 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Experimente utilizar o codigo no evento change do combo e não no Keypress.
Ficaria algo assim:

Private Sub cbpolo_change()
Dim rnLista, rnCell As Range
Dim wkData As Worksheet
Set wkData = ThisWorkbook.Sheets("BDAlimentadores")
Set rnLista = wkData.Range("C3:C8")
If Len(CbPOLO.Value) = 0 Then Exit Sub

Set Y = wkData.Range("C3:C65536").Find(CbPOLO.Value, LookAt:=xlWhole)
  If Not Y Is Nothing Then
    If CStr(UCase(CbPOLO.Value)) = CStr(UCase(Y.Cells)) Then
    
    Else
      GoTo Alerta
    End If
  Else
   GoTo Alerta
  End If
Exit Sub
Alerta:
  MsgBox "Polo Inválida ; " & Chr(13) & Chr(13) & "Digite Corretamente" & Chr(13) & Chr(13) & _
  "                   OU" & Chr(13) & Chr(13) & "SELECIONE NA CAIXA", vbOKOnly + vbCritical _
  + vbInformation, "::.ERRO DE DIGITAÇÃO.::"
   CbPOLO.Text = ""
   CbPOLO.SelStart = 0

End Sub
 
Postado : 16/04/2012 6:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Quase deu certo, Desculpem-me mas continuo aproveitando da boa vontade de todos
se digitar W e der enter vai para a proxima combo sem dar erro
2- se digitar W duas vezes ou 2 outras letras quaisquer que não sejam iniciais do dado da combo ai dá o erro , porem apaga somente a segunda letra ,
usei:
O problema que estava tendo de mudar de combo mesmo com dado errado , acabou.
O problema é que:
1 - Quando digito a primeira letra na CbPOLO, se existe o dado na combo , o cursor já muda automaticamente para a proxima combo ( ótimo ) O problema é que se houver 2 dados com as mesmas iniciais o cursor muda escolhendo por conta própria.
2 - Nas combos CbCidade e CbAlimentador , quando digito , mesmo existindo aquela inicial , aparece a msgbox de erro.

Por exemplo
1- abre a CbPOLO e digita L , verá que somente ao digitar L será escolhido Lavras ja vai pra txtDispositivo ; ÉRRADO pois no caso de haver mais de uma Polo com as mesmas iniciais daria errado
2- Na CbCidade digita "W" verá que aparecerá a Msgbox de erro , CERTO pois na polo LAVRAS não existe cidade começada com W
3- Na CbCidade digita "C" verá que aparecerá a Msgbox de erro ,ERRADO pois na polo LAVRAS existe 4 cidades começada com C sendo elas CAMPO BELO, CANA VERDE, CANDEIAS, CRISTAIS

P.S- Pensei em arrumar uma maneira de não deixar digitar e somente escolher nas combos o dado necessitado , mas o problema é que em alguns casos algumas combos vão ter mais de 100 dados ,abrir e procurar o dado escolhido vai ser um pouco trabalhoso.

Peço que quem for responder se não for muito trabalhoso ,comente o código ; para que eu entenda a lógica do código e faça as adaptações necessárias agora e futuramente , evitando assim de incomoda-los com perguntas que para muitos pode parecer idiota . Esclareço que os códigos constante neste arquivo não foram nenhum escrito por mim e sim adaptados .
Antecipadamente agradecido.

 
Postado : 16/04/2012 10:57 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alguem saberia?

 
Postado : 17/04/2012 12:53 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Sobrou só esse que não consegui resolver ;
O problema é que:
1 - Quando digito a primeira letra na CbPOLO, se existe o dado na combo , o cursor já muda automaticamente para a proxima combo ( ótimo ) O problema é que se houver 2 dados com as mesmas iniciais o cursor muda escolhendo por conta própria.

Por exemplo
1- abre a CbPOLO e digita L , verá que somente ao digitar L será escolhido Lavras ja vai pra txtDispositivo ; ÉRRADO pois no caso de haver mais de uma Polo com as mesmas iniciais daria errado

 
Postado : 19/04/2012 8:46 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alguem saberia?

Claudinei, imagino que com a ancia de chegar ao resultado que espera, tenha postado a frase acima inocentemente, no meu ponto de ver eu a considero um pouco imprória, uma vez que não só neste Forum, mas na maioria o pessoal tem feito o possível e impossível para colaborar, todos com ideias e formas diferentes, e pelo que vejo foi o caso deste tópico, então se nenhuma das opções foram satisfatória, não é que não saibamos, mas sim até por falta de tempo de se lidar com a questão.
Peço a gentileza, de pelo menos não utilizar mais este tipo e citação, que com certeza, ficará sem respostas, e isto, serve para a maioria dos Foruns.

Voltando ao assunto deste Tópico, não testei nenhuma das opções citadas e não utilizei o seu exemplo, simplesmente fiz uma adaptação baseado em um post e exemplo anexado do JoséA no forum abaixo, trocando TextBox por ComboBox, veja se é isto o que quer, se for é só a daptar ao seu modelo, lembrando que dependendo das adaptações que for fazer, leevar em consideração as recomendações dos colegas quanto aos Eventos dos Controles.

Fonte
http://www.tomasvasquez.com.br/forum/vi ... f=17&t=638
TextBox Auto Completar...
Por JoséA

Adaptado para ComboBox - Mauro Coutinho

[]s

 
Postado : 20/04/2012 7:31 pm
Página 1 / 2