Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Dúvida-Ajuda para usar o combobox[Muito bem Resolvido]
- Alex Sandro
- Colaborador
- Mensagens: 88
- Registrado em: Qua Jan 06, 2010 9:39 am
- Localização: Inhumas-GO
- Contato:
Dúvida-Ajuda para usar o combobox[Muito bem Resolvido]
Olá,
Ainda sou um pouco leigo no VBA, mas gostaria de saber as possibilidades que existem em um ComboBox no front_end que busca registros no Cadastro_dados.Como fazer?
Coloquei a planilha em anexo com o ComboBox no front.
Abraços.
Ainda sou um pouco leigo no VBA, mas gostaria de saber as possibilidades que existem em um ComboBox no front_end que busca registros no Cadastro_dados.Como fazer?
Coloquei a planilha em anexo com o ComboBox no front.
Abraços.
- Anexos
-
- ModeloCadastro_v3.rar
- (61.88 KiB) Baixado 303 vezes
Editado pela última vez por Alex Sandro em Ter Ago 24, 2010 12:42 am, em um total de 1 vez.
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Dúvida-Ajuda para usar o combobox
Alex, não entendi o que quiz dizer quanto "as possibilidades que existem em um ComboBox no front_end que busca registros no Cadastro_dados", e nem o que pretende fazer, poderia ser mais expecifico.
[]s
[]s
- Alex Sandro
- Colaborador
- Mensagens: 88
- Registrado em: Qua Jan 06, 2010 9:39 am
- Localização: Inhumas-GO
- Contato:
Re: Dúvida-Ajuda para usar o combobox
Olá Mauro,
Postei aqui ontem às 4 da manhã, mas era para ser em outro tópico. Mas aproveitando o DoublePost a minha intenção é que o ComboBox funcione como uma pesquisa no form de cadastro, mas era naquela questão que já estava sendo discutido no outro tópico em que vc respondeu que ao Clicar em novo registro a função limpa os controles e aquela coisa e tal. Pois bem, estava dando uma analisada na web e encontrei este código:
Desta forma eu entendo e consigo executar, o problema maior meu sempre foi BD e eu não sei o método que usa para fazer a ligação, porque agora são duas planilha distintas e por eu estar muito focado nisto já estou até desconhecendo a funcionalidade do projeto.^^
Aguardo a colaboração e peço desculpas pelo DoublePost.
Postei aqui ontem às 4 da manhã, mas era para ser em outro tópico. Mas aproveitando o DoublePost a minha intenção é que o ComboBox funcione como uma pesquisa no form de cadastro, mas era naquela questão que já estava sendo discutido no outro tópico em que vc respondeu que ao Clicar em novo registro a função limpa os controles e aquela coisa e tal. Pois bem, estava dando uma analisada na web e encontrei este código:
Código: Selecionar todos
Private Sub ComboBox_Pesquisa_Change()
'If ComboBox_Pesquisa.ListIndex = -1 Then
' Exit Sub
'End If
'DadosLinha = ComboBox_Pesquisa.ListIndex + 2
'AtualizaControles
End Sub
Código: Selecionar todos
rivate Sub CommandButton_Salvar_Click()
If TextBox_Nome.Value = "" Then
MsgBox "---------Informe os dados---------------", vbOKOnly + vbCritical, "www.profissionaisdoleite.com.br"
TextBox_Nome.SetFocus
Exit Sub
End If
If MsgBox("Confirma Atualização ? " & Chr(13) & Chr(13) & _
"Código: " & TextBox_Codigo.Value & Chr(13) & Chr(13) & _
"Nome: " & TextBox_Nome.Value, vbYesNo + vbQuestion, "www.profissionaisdoleite.com.br") = vbNo Then
TextBox_Nome.SetFocus
Exit Sub
End If
If ComboBox_Pesquisa.ListIndex = -1 Then
DadosLinha = Dados.UsedRange.Rows.Count + 1
Dados.Range("CodCalc").Value = CadastroCodigo
End If
AtualizaPlanilha
MsgBox "ATUALIZAÇÃO EFETUADA COM SUCESSO !"
RestauraControles
AtualizaComboBoxPesquisa
CadastroCodigo = Dados.Range("CodCalc").Value + 1
TextBox_Codigo.Value = CadastroCodigo
End Sub
Código: Selecionar todos
Private Sub UserForm_Initialize()
AtualizaListaEstados
CadastroCodigo = Plan1.Range("CodCalc").Value + 1
TextBox_Codigo.Value = CadastroCodigo
'AtualizaComboBoxPesquisa
Call Nomes
Call OrdenarComboBox
End Sub
Sub Nomes()
Dim OCOLLECTION As New Collection
Dim VARVALUE As Variant
Dim i, ULTLINHA As Long
ULTLINHA = Plan1.Range("B65536").End(xlUp).Row
On Error Resume Next
For Each VARVALUE In Plan1.Range("B2:B" & ULTLINHA)
OCOLLECTION.Add VARVALUE, VARVALUE
Next
For i = 1 To OCOLLECTION.Count
ComboBox_Pesquisa.AddItem OCOLLECTION.Item(i)
Next
End Sub
Sub OrdenarComboBox()
'Colocar nomes em ordem classificar
Dim iForsta, iSista As Integer
Dim i, j As Integer
Dim sTemp As String
iForsta = 0
iSista = ComboBox_Pesquisa.ListCount - 1
For i = iForsta To iSista - 1
For j = i + 1 To iSista
If ComboBox_Pesquisa.List(i) > ComboBox_Pesquisa.List(j) Then
sTemp = ComboBox_Pesquisa.List(j)
ComboBox_Pesquisa.List(j) = ComboBox_Pesquisa.List(i)
ComboBox_Pesquisa.List(i) = sTemp
End If
Next j
Next i
End Sub
Código: Selecionar todos
Sub OrdenarComboBox()
'Colocar nomes em ordem classificar
Dim iForsta, iSista As Integer
Dim i, j As Integer
Dim sTemp As String
iForsta = 0
iSista = ComboBox_Pesquisa.ListCount - 1
For i = iForsta To iSista - 1
For j = i + 1 To iSista
If ComboBox_Pesquisa.List(i) > ComboBox_Pesquisa.List(j) Then
sTemp = ComboBox_Pesquisa.List(j)
ComboBox_Pesquisa.List(j) = ComboBox_Pesquisa.List(i)
ComboBox_Pesquisa.List(i) = sTemp
End If
Next j
Next i
End Sub
Aguardo a colaboração e peço desculpas pelo DoublePost.
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Dúvida-Ajuda para usar o combobox
Fabricio, naquele outro tópico falavamos sobre combobox dependentes, ou seja prencher outro Combo quando selecionar para lançar um Novo Registro, e não de pesquisa.
Mas pelo que postou agora, eu realmente não estou entendendo qual a sua real necessidade em alterar a Função do Form Cadastro, se temos na Front_End o Form Pesquisa aonde poderá pesquisar por qualquer campo e retornar o Registro encontrado para o Form Cadastro.
Se a intensão é um form diferente para Pesquisa, aconselho criar um novo e não alterar o que ja existe, a não ser que não vá utiliza-lo.
Quanto a trabalhar com duas Pastas na V3, de uma olhada no tópico abaixo, que poderá esclarecer vários pontos, e se não entendermos a funcionalidade da mesma, só iremos piorar se ficarmos adicionando rotinas encontradas na net, que apesar de funcionarem para o que foram criadas se peerderão nas referencias.
v.3 MIGRANDO
viewtopic.php?f=5&t=352
Procure tambem por outros tópicos referentes a V3 para poder aprimorar seu conhecimento nessa versão.
[]s
Mas pelo que postou agora, eu realmente não estou entendendo qual a sua real necessidade em alterar a Função do Form Cadastro, se temos na Front_End o Form Pesquisa aonde poderá pesquisar por qualquer campo e retornar o Registro encontrado para o Form Cadastro.
Se a intensão é um form diferente para Pesquisa, aconselho criar um novo e não alterar o que ja existe, a não ser que não vá utiliza-lo.
Quanto a trabalhar com duas Pastas na V3, de uma olhada no tópico abaixo, que poderá esclarecer vários pontos, e se não entendermos a funcionalidade da mesma, só iremos piorar se ficarmos adicionando rotinas encontradas na net, que apesar de funcionarem para o que foram criadas se peerderão nas referencias.
v.3 MIGRANDO
viewtopic.php?f=5&t=352
Procure tambem por outros tópicos referentes a V3 para poder aprimorar seu conhecimento nessa versão.
[]s
- Alex Sandro
- Colaborador
- Mensagens: 88
- Registrado em: Qua Jan 06, 2010 9:39 am
- Localização: Inhumas-GO
- Contato:
Re: Dúvida-Ajuda para usar o combobox
Aquele problema do outro tópico já foi resolvido. O negócio agora seria fazer tipo um loop com o combo para buscar registros no BD.
Até uma rotina de Auto Completar já resolveria, pois muitas vezes seria digitado o mesmo nome que já está registrado no BD.
Eu só não estou conseguindo fazer a conexão.Entendeu?
Abraços
Até uma rotina de Auto Completar já resolveria, pois muitas vezes seria digitado o mesmo nome que já está registrado no BD.
Eu só não estou conseguindo fazer a conexão.Entendeu?
Abraços
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Dúvida-Ajuda para usar o combobox
As conexões você já tem nas linhas :
Const nomePlanilhaCadastro As String = "Fornecedores"
Private wsCadastro As Worksheet
Set wsCadastro = wbCadastro.Worksheets(nomePlanilhaCadastro)
Para referenciar na rotina para popular o combobox, você tem de referenciar assim :
For Each VARVALUE In wsCadastro.Range("B2:B" & ULTLINHA)
ou seja em cada parte da rotina que for usar aonde os registros estejam na Pasta Dados, planilha Fornecedores é necessário usar a referencia a mesma, alterando Plan1 para wsCadastro, lógico que é só um exemplo, você tem de acertar para os nomes que deu e os ranges de sua planilha.
Veja na duvida do fabricio que postei como realizar a referencia a outras Planilhas fora da Front_End :
Realizar calculos no modelo V3[Resolvido]
viewtopic.php?f=5&t=480
[]s
Const nomePlanilhaCadastro As String = "Fornecedores"
Private wsCadastro As Worksheet
Set wsCadastro = wbCadastro.Worksheets(nomePlanilhaCadastro)
Para referenciar na rotina para popular o combobox, você tem de referenciar assim :
For Each VARVALUE In wsCadastro.Range("B2:B" & ULTLINHA)
ou seja em cada parte da rotina que for usar aonde os registros estejam na Pasta Dados, planilha Fornecedores é necessário usar a referencia a mesma, alterando Plan1 para wsCadastro, lógico que é só um exemplo, você tem de acertar para os nomes que deu e os ranges de sua planilha.
Veja na duvida do fabricio que postei como realizar a referencia a outras Planilhas fora da Front_End :
Realizar calculos no modelo V3[Resolvido]
viewtopic.php?f=5&t=480
[]s
- Alex Sandro
- Colaborador
- Mensagens: 88
- Registrado em: Qua Jan 06, 2010 9:39 am
- Localização: Inhumas-GO
- Contato:
Re: Dúvida-Ajuda para usar o combobox
Obrigado Mauro vlw pela a ajuda, mas não consegui fazer o que pretendia, mas agora eu entendi como funciona a conexão com o banco.
Pelo menos aprendi um pouco com as dicas e lendo e relendo os tópicos.
Um grande abraço e obrigado.
Obs: vou usar o seu código de um exemplo que você postou no forum para usar no form pesquisa.
Pelo menos aprendi um pouco com as dicas e lendo e relendo os tópicos.
Um grande abraço e obrigado.
Obs: vou usar o seu código de um exemplo que você postou no forum para usar no form pesquisa.
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Dúvida-Ajuda para usar o combobox
Alex, a minha intensão não foi a de querer que desista de chegar a uma solução buscando uma outra forma e sim procurar levar os que solicitam ajuda a entender um pouco mais sobre esse mundo que é o VBA, até eu estou aprendendo muito aqui no forun, eu já alterei várias rotinas que eu usava por outras mais simples e diretas que aqui encontrei, e fico contente em saber que pelo menos você tentou e está evoluindo com as dicas do forun.
Mas, sempre tem um mas, não posso deixar esse seu tópico sem uma resposta positiva, então vamos preencher o seu combobox :
Usando o Modelo que anexou V3 :
Para não mexer na extrutura toda e não nos confundir, depois dos testes você pode recriar a mesma, faça o seguinte :
No Form CADASTRO adicione um Novo ComboBox e um CommandButton e renomeie os mesmos para :
ComboLista e cboPrencheCombo
No (CommandButton) cboPrencheCombo coloque a rotina abaixo :
Feito isso, acione o form Cadastro e clique no Botão e verá que o novo Combo será preenchido com os nomes que estão na Pasta ModeloCadastro_Dados,
aba "Fornecedores" que se refere a Const nomePlanilhaCadastro As String = "Fornecedores", Private wsCadastro As Worksheet,
coluna "B" sem repetição.
[]s
Mas, sempre tem um mas, não posso deixar esse seu tópico sem uma resposta positiva, então vamos preencher o seu combobox :
Usando o Modelo que anexou V3 :
Para não mexer na extrutura toda e não nos confundir, depois dos testes você pode recriar a mesma, faça o seguinte :
No Form CADASTRO adicione um Novo ComboBox e um CommandButton e renomeie os mesmos para :
ComboLista e cboPrencheCombo
No (CommandButton) cboPrencheCombo coloque a rotina abaixo :
Código: Selecionar todos
Private Sub cboPrencheCombo_Click()
Dim OCOLLECTION As New Collection
Dim VARVALUE As Variant
Dim I As Long
On Error Resume Next
For Each VARVALUE In wsCadastro.Range("B2:B" & wsCadastro.Range("B65536").End(xlUp).Row)
OCOLLECTION.Add VARVALUE, VARVALUE
Next
For I = 1 To OCOLLECTION.Count
ComboLista.AddItem OCOLLECTION.Item(I)
Next I
End Sub
aba "Fornecedores" que se refere a Const nomePlanilhaCadastro As String = "Fornecedores", Private wsCadastro As Worksheet,
coluna "B" sem repetição.
[]s
- Alex Sandro
- Colaborador
- Mensagens: 88
- Registrado em: Qua Jan 06, 2010 9:39 am
- Localização: Inhumas-GO
- Contato:
Re: Dúvida-Ajuda para usar o combobox
Olha vou te falar uma coisa:
Estou acompanhando outro fórum que você visitava(visita), mas só lendo os artigos e não postando nada e comecei a acompanhar muito os tópicos em que você ajudava o pessoal com suas dúvidas e já estava vendo em você como um mestre, mas depois desta eu não tenho palavras para expressar o quanto é sábio os seus conhecimentos. Como iniciante vou seguir estudando para quem sabe um dia chegar a pelo menos 1/3 do seu conhecimento e é uma honra participar de um fórum com pessoas como você que nunca desiste de ajudar ao próximo e vou ser assim também, de nunca desistir.
Muito Obrigado Mauro!
Edit.: Fiz um outro teste sem adicionar o comandButton e coloquei o código no evento change do ComboBox e o resultado foi o mesmo. Acho que não terá problemas não né?
Mais uma vez Obrigado.
Estou acompanhando outro fórum que você visitava(visita), mas só lendo os artigos e não postando nada e comecei a acompanhar muito os tópicos em que você ajudava o pessoal com suas dúvidas e já estava vendo em você como um mestre, mas depois desta eu não tenho palavras para expressar o quanto é sábio os seus conhecimentos. Como iniciante vou seguir estudando para quem sabe um dia chegar a pelo menos 1/3 do seu conhecimento e é uma honra participar de um fórum com pessoas como você que nunca desiste de ajudar ao próximo e vou ser assim também, de nunca desistir.
Muito Obrigado Mauro!
Edit.: Fiz um outro teste sem adicionar o comandButton e coloquei o código no evento change do ComboBox e o resultado foi o mesmo. Acho que não terá problemas não né?
Mais uma vez Obrigado.