Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Dúvida-Ajuda para usar o combobox[Muito bem Resolvido]

Esclarecimentos e dúvidas sob o Modelo de Aplicativo de Cadastro em VBA no Microsoft Excel publicado no site e blog http://www.tomasvasquez.com.br
Avatar do usuário
Alex Sandro
Colaborador
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]

Mensagem por Alex Sandro »

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.
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.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mauro Coutinho
Jedi
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

Mensagem por Mauro Coutinho »

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


Avatar do usuário
Alex Sandro
Colaborador
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

Mensagem por Alex Sandro »

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:

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
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.


Avatar do usuário
Mauro Coutinho
Jedi
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

Mensagem por Mauro Coutinho »

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


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Alex Sandro
Colaborador
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

Mensagem por Alex Sandro »

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


Avatar do usuário
Mauro Coutinho
Jedi
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

Mensagem por Mauro Coutinho »

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


Avatar do usuário
Alex Sandro
Colaborador
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

Mensagem por Alex Sandro »

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.


Avatar do usuário
Mauro Coutinho
Jedi
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

Mensagem por Mauro Coutinho »

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 :

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
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


Avatar do usuário
Alex Sandro
Colaborador
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

Mensagem por Alex Sandro »

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.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder