Ir para conteúdo
Fórum Script Brasil
  • 0

Caixa de listagem


VuItø§ Ñøtµrnø§

Pergunta

Boa tarde pessoal, estou com um pequeno probleminha aqui...

Estou criando um form que utilizarei para fazer consulta em dados na planilha do excel, e eu tinha pensado em utilizar uma caixa de listagem para primeiro listar os nomes dos produtos, e depois eu clicaria em uma das opções na caixa de listagem, e quando eu clicasse em um dos produtos listados, esse mesmo exibiria os dados nas textbox ao lado. Porém não sei como fazer isso, poderiam me ajudar?

userform.JPG

Desde já agradeço a atenção de vocês.

Abraços

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Guest Joao.Neto

Nesse caso, alem do nome, voce teria de concatenar uma informacao que torne este registro unico. Por exemplo: "0001 Jose Maria da Silva". Certo, para alimentar esse cara no listbox, suponha que sua lista comece apartir da celula A1 e que a primeira linha tenha o cabeçalho: "nome" e os registros começam apartir da célula A2.

Dim rng as Range, rngNome as Range

set rngNome = Range("A1").CurrentRegion.OffSet(1.0)

set rngNome = rngNome.resize(rngNome.rows.count-1,1)

For each rng in rngNome.rows

listbox.additem rng.cells(1,1)

Next

e pronto, você terá adicionado os itens a sua listbox...

agora, a continuação fica para o próximo episódio, neste mesmo canal, neste mesmo dia, neste mesmo horário....

Testa primeiro isso e me diz se funcionou.

:ninja:

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Tricolor83 --
Joao,

agora entendi o comando "rng.cells(1,1)"

Testei o seu exemplo também com "rng.offset(0,0)" e funcionou da mesma forma. Existe alguma diferença entre estas duas propriedades?

Valeu!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest João.Neto

Na verdade o rng.cells(1,1) e o "rng.offset(0,0)" são duas coisas diferentes.

Offset(linha,coluna), desloca a seleção atual um "x" número de linhas e um "x" números de colunas. No caso do offset(1,0) serve se sua lista possui um cabeçalho e você não quer que o rótulo dele seja incluso na lista. Por exemplo: "nome".

Já o rng.cells(1,1) é uma outra história, um pooooucooo complexa. Mas vou tentar explicar.

A variávl rngNome está recebendo a região atual dos dados da lista excluindo o cabeçalho - se tiver. Ou seja, o currentregion faz com que, se amanhã a sua lista de nomes aumento, você não precise definir o as células de sua lista na macro. Certo?.

Sabendo o meu range de células, ou melhor, a minha lista de nomes, então percorro cada linha desta lista e atribuo o valor da primeira célula que eu encontrar nesta linha, ou seja, o cells(1,1).

"For each rng in rngNome.rows", aqui eu percorro cada linha da minha lista de nomes.

listbox.additem rng.cells(1,1) "como eu estou percorrendo cada linha de minha lista, e esta lista possuo apenas uma coluna, logo me resta apenas uma célula em cada linha, ou seja, cells(1,1);

Entendeu? nem eu... mas com a prática e o tempo você entende. :blink:

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, já fiz o código que você precisa, é só adaptar conforme a estrutura abaixo:

Código para carregar as comboboxes

Private Sub UserForm_Initialize()

Dim rngNome As Range, rng As Range

Set rngNome = ThisWorkbook.Worksheets("Dados").Range("A1").CurrentRegion.Offset(1, 0).Resize( _

ThisWorkbook.Worksheets("Dados").Range("A1").CurrentRegion.Offset(1, 0).Rows.Count - 1, 1)

For Each rng In rngNome.Rows

listaNomes.AddItem rng.Cells(1, 1)

Next

End Sub

Código para atualizar os campos conforme os que for selecionado na listbox:

Private Sub listaNomes_Change()

On Error GoTo nao_encontrado

Dim intRegistro As Integer

intRegistro = ThisWorkbook.Worksheets("Dados").Range("A:A"). _

Find(listaNomes.Value).Row

Me.txtEndereco = ThisWorkbook.Worksheets("Dados").Cells(intRegistro, 2)

Me.txtTelefone = ThisWorkbook.Worksheets("Dados").Cells(intRegistro, 3)

Me.txtEmail = ThisWorkbook.Worksheets("Dados").Cells(intRegistro, 4)

Exit Sub

nao_encontrado:

MsgBox "Registro não encontrado, verifique se o mesmo existe.", vbCritical _

+ vbDefaultButton1, "Cadastro de Clientes"

End Sub

Obs.: crie uma planilha chamada Dados e nela coloque as informações como nome, end e etc..., dai para acrescentar é só

utilizar o me."nome da txtbox" = ThisWorkbook.Worksheets("Dados").Cells(intRegistro, "número da coluna onde está o registro")

beleza? :ninja:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...