Notifications
Clear all

Como estabelecer limites para o RowSource de uma Combobox?

7 Posts
2 Usuários
0 Reactions
1,730 Visualizações
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

O caso é o seguinte:
Tenho uma Combobox que precisa ser preenchida com os ítens que se encontram em uma determinada coluna de uma planilha.
Até aí, sem novidades.
Mais o caso é que essa coluna está em constante mudança (ítens entram ou saem) então não consigo delimitar qual é a útima linha dessa coluna.
Fiz varias tentativas e acho que estou no caminho certo, mais algo ainda não está correto. Vejam oq fiz até agora:

Dim limite_adm As Object
Set limite_adm = Ferramentas.Range("Q7000").End(xlUp)
ComboBox13.RowSource = "Ferramentas!Q2:" & limite_adm

Só que na hora que vou rodar o programa, ele dá o seguinte erro: "O objeto é obrigatório" e me aponta a linha de código aonde eu declaro oq seria a variável "limite_adm"

Pra falar a verdade amigos, não sei nem se esse meu código está muito coeso...
É uma tentativa! Oq preciso é de uma variável que me dê o endereço da última linha com dados daquela coluna em especifico para eu concatenar com o código RowSource da Combobox
Acho que esse meu código, mesmo se funcionar, vai apenar dar o seguinte resultado:
ComboBox13.RowSource = "Ferramentas!Q2:" & DADOS CONTIDOS NA CÉLULA

Sendo que o correto seria:
ComboBox13.RowSource = "Ferramentas!Q2:" & ENDEREÇO DA CÉLULA EM QUESTÃO

Alguma idéia senhores?

 
Postado : 02/04/2013 12:35 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente "declarar" o limite_adm como integer ou long, e não como objeto.
Para definir o rowSource, é necessario que a range seja "determinante" de inicio e fim , seira algo assim
Dim limite_adm As Integer
limite_adm = Sheets("Ferramentas").Cells(Cells.Rows.Count, "Q").End(xlUp).Row
ComboBox13.RowSource = "Ferramentas!Q2:Q" & limite_adm

 
Postado : 02/04/2013 1:03 pm
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Nada Reinaldo...
Existe alguma declaração de tipo de variável que retorne o endereço da célula e não o conteudo da mesma?

 
Postado : 02/04/2013 1:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Então creio que não entedi o que voce realmente pretende/deseja??
Para ter um valor de uma celula:
limite_adm = Sheets("Ferramentas").range("Q700').value, porem isso não define o rowsource

 
Postado : 02/04/2013 1:50 pm
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

É mais ou menos assim Reinaldo.
Quero fazer essa fórmula:
ComboBox13.RowSource = "Ferramentas!Q2:" & limite_adm

Onde "limite_adm" seria uma variável que define qual a última linha com dados de uma determinada coluna.
No meu caso, tenho a Planilha "Ferramentas" e a coluna seria a Q

Repare que na fórmula ComboBox13.RowSource = "Ferramentas!Q2:????" falta eu colocar qual será a última linha que deverá aparecer na Combobox.
Tentei suprir isso concatenando uma variável (limite_adm) só que eu preciso que essa variável me indique qual o endereço da célula e não o conteudo da mesma.

Imagina que a ultima linha com dados da coluna Q seja a linha 23 e que nesse endereço (Q23) a celula esteja preenchido com a palavra "MARCOS", então eu preciso de uma função que me dê o ENDEREÇO da célula e não o valr contido na mesma:

Resultado Errado:
ComboBox13.RowSource = "Ferramentas!Q2:" & MARCOS

Resultado Certo:
ComboBox13.RowSource = "Ferramentas!Q2:" & Q23

Entendeu?

 
Postado : 03/04/2013 10:55 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Foi o que eu havia entendido inicialmente, porem a sintaxe passada está errada.
Veja como fica abaixo:

Dim limite_adm As Integer
'Aqui conta qtas linhas estão preenchidas
limite_adm = Sheets("Ferramentas").Cells(Cells.Rows.Count, "Q").End(xlUp).Row
'Aqui atribui o valor a RowSource
ComboBox13.RowSource = sheets("Ferramentas").range("Q2:Q" & limite_adm)
 
Postado : 03/04/2013 12:34 pm
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Reinaldo, sensacional cara!
Tive que fazer uma pequena mudança pois ele insistia em dar uma msg de erro: "Tipos incompatíveis", então o resultado final ficou assim:

Dim limite_adm As Integer
'Aqui conta qtas linhas estão preenchidas
limite_adm = Sheets("Ferramentas").Cells(Cells.Rows.Count, "Q").End(xlUp).Row
'Aqui atribui o valor a RowSource
ComboBox13.RowSource = "Ferramentas!Q2:Q" & limite_adm

Mais muito obrigado meu amigo!
Como sempre, os amigos do fórum sempre solícitos.

Um forte abraço!

 
Postado : 04/04/2013 11:37 am