Página 1 de 1
REFERENCIA A UMA CÉLULA NO VBA
Enviado: 11 Jan 2016 às 20:26
por dgomedeiros
Boa noite!
Pessoal, estou aprendendo agora a mexer no VBA e estou apanhando bastante! Gostaria da ajuda de vocês com um programa que estou fazendo.
O que eu preciso fazer é o seguinte:
Criar uma combobox (cmd_responsavel) que surge a partir dos resultados de uma busca (em todas as colunas da primeira linha de uma pasta de trabalho) pelo valor igual ao de uma combobox (cmb_servico) e quando achar o valor igual ele tem que me trazer todos os valores daquela mesma coluna, porém a partir da linha 5, por exemplo.
Exemplificado...
Há uma planilha com um monte de serviços na primeira linha (LIMPEZA, ARRUMAÇÃO ARMÁRIOS, BANHEIRO, ETC.) estes são os serviços. Abaixo deles tem uma série de nomes (JOAO, PAULO, PEDRO, IGOR, ETC.), mas da 5ª linha em diante.
Então, digamos que na cmb_serviço esteja o nome LIMPEZA e que este nome esteja na célula J1 da pasta de trabalho, daí ele deve identificar o nome LIMPEZA na célula J1, mas só vai trazer pra a cmb_responsavel o que estiver na J5 pra baixo até encontrar uma célula vazia.
Entenderam??
Conto com a ajuda de vocês.
REFERENCIA A UMA CÉLULA NO VBA
Enviado: 12 Jan 2016 às 08:13
por mkenji
Bom dia, dgomedeiros!
Primeiro, por experiência própria, eu colocaria sua listagem na vertical: transformaria sua primeira linha em coluna e sua quinta linha em coluna também (seu J5 seria E8).
Nas propriedades do ComboBox existe o 'RowSource'. Você preenche este campo, por exemplo, 'Plan1!A1:A8' e ele carrega os dados desse Range ao rodar o VBA. Mas na horizontal o ComboBox carrega apelas o primeiro dado, o que torna inviável de usar esse recurso com lista na horizontal.
Acho que já é um bom começo

Re: REFERENCIA A UMA CÉLULA NO VBA
Enviado: 12 Jan 2016 às 09:45
por Reinaldo
Segue uma possibilidade, veja se consegue adaptar a sua realidade
Re: REFERENCIA A UMA CÉLULA NO VBA
Enviado: 12 Jan 2016 às 10:22
por dgomedeiros
Bom dia!
mkenji, não tem como eu colocar na vertical, pois são várias planilhas diferentes que ele tem que buscar esses valores. Na opção limpeza, por exemplo, cada responsável tem dias e horas para executar tal tarefa, o mesmo ocorre para os outros serviços, ou seja, eu tenho pelo menos 14 planilhas dentro de uma pasta de trabalho.
Reinaldo, ainda estou olhando seu código para ver se consigo tirar alguma coisa dele, pois tem algumas funções lógicas que eu não conhecia, mas acredito que seu raciocínio foi o mesmo do mkenji.
REFERENCIA A UMA CÉLULA NO VBA
Enviado: 12 Jan 2016 às 12:34
por mkenji
Muito boa a solução do Reinaldo.
Para o seu caso dgomedeiros, poderia usar o mesmo código mas trocando as linhas pelas colunas do código mostrado.
Exemplo:
' Do While .Cells(C, lColCidade) <> ""
cboCidades.AddItem .Cells(C, lColCidade).Value
C = C + 1
Loop '
para
' Do While .Cells( lColCidade,C) <> ""
cboCidades.AddItem .Cells(lColCidade, C).Value
C = C + 1
Loop'
Claro que há necessidade de mais algumas adaptações. Mas desse modo, a varredura do laço será na horizontal!
REFERENCIA A UMA CÉLULA NO VBA
Enviado: 12 Jan 2016 às 13:21
por Reinaldo
Creio que há uma discrepância entre meu entendimento e o do colega Kenji vs seu ultimo post
"não tem como eu colocar na vertical, pois são várias planilhas diferentes que ele tem que buscar esses valores".
A proposta procura somente em uma unica planilha. Caso não consiga adaptar a sua realidade disponibilize o modelo de sua planilha, bem como informando manualmente como e e como gostaria que fosse
REFERENCIA A UMA CÉLULA NO VBA
Enviado: 12 Jan 2016 às 14:16
por dgomedeiros
Reinaldo anexei a planilha exemplo na mensagem original. Fiz o código para ela da seguinte maneira...
Private Sub UserForm_Initialize()
Dim coluna As Long
coluna = 1
With Sheets("Plan1").Range("A:Z")
Do While .Cells(1, coluna) <> ""
ComboBox1.AddItem .Cells(1, coluna).Value
coluna = coluna + 1
Loop
End With
End Sub
Está retornando apenas o valor limpeza, que é aquele que está na A1.
REFERENCIA A UMA CÉLULA NO VBA
Enviado: 12 Jan 2016 às 15:29
por mkenji
Você está com a referência na primeira linha. Utilize esse:
Private Sub UserForm_Initialize()
Dim coluna As Long
coluna = 1
With Sheets("Plan1").Range("A:Z")
Do While .Cells(2, coluna) <> ""
ComboBox1.AddItem .Cells(2, coluna).Value
coluna = coluna + 1
Loop
End With
End Sub
Re: REFERENCIA A UMA CÉLULA NO VBA
Enviado: 12 Jan 2016 às 21:13
por dgomedeiros
Pessoal estive olhando e mesmo com o sub que me encaminhou ele ainda não puxa todas as células, fui pesquisar a fundo e vi uma coisa relacionada com a função COLUMN COUNT. Como que eu faço para configurar ela para puxar tudo.
Tive também um problema em uma listbox que não puxa duas colunas.