Notifications
Clear all

Popular combobox as vezes funciona....

5 Posts
2 Usuários
0 Reactions
1,059 Visualizações
(@finaljustice)
Posts: 91
Trusted Member
Topic starter
 

Boa tarde,

Estou montando uma userform e gostaria de popular um combobox. O problema é que ele só popula da maneira correta se eu estiver na sheet em questão e estou querendo montar isso referenciando tudo sem usar .select e outros "vícios" q eu tinha, pois pretendo esconder a planilha e deixar somente a userform visível quando o projeto estiver finalizado.

O problema ocorre quando tento popular para o Combobox1, se eu não estiver na sheet Jobs, ele não traz a lista completa somente o primeiro item.

Private Sub Userform_Activate()
Dim CM As Boolean

ThisWorkbook.Worksheets("Jobs").Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).Name = "joblist"
UserForm1.TextBox1 = ThisWorkbook.Worksheets("About").Range("B1")
UserForm1.TextBox2 = ThisWorkbook.Worksheets("About").Range("B2")

UserForm1.ComboBox1.RowSource = "joblist"
UserForm1.CommandButton1.Caption = "Clock-in"

Do
    If CM = True Then Exit Sub
    TextBox4 = Format(Now, "hh:mm:ss")
    DoEvents
    Loop
    

End Sub

Alguém sabe me explicar o porque isso está acontecendo? Não consigo identificar aonde estou errando.

Obrigado pela atenção
Luis

 
Postado : 20/01/2015 10:58 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

De qualquer forma tu vai ter que apontar (referenciar) para o objeto em questão (guia).

Já tentou usar a estrutura

With....
'..Codigo
End With

http://xlvba.fr.yuku.com/topic/318/Usin ... L59L5I0Urc
http://www.bettersolutions.com/vba/vnn5 ... 251112.htm

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 20/01/2015 11:08 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

o problema está exatamente aqui:

ThisWorkbook.Worksheets("Jobs").Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).Name = "joblist"

Esse Cells não tem referência de planilha, e pega a ultima célula somente da planilha ativa...
A dica do Alex é boa, mas não vai funcionar se vc não colocar um ponto no Cells...

with ThisWorkbook.Worksheets("Jobs")
.Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row).Name = "joblist"
End with

p.s.: valeu pelas curtidas naquelas tópicos antigos... são dicas boas e acabam ficando perdidas ! fico feliz que tenham sido úteis !

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 20/01/2015 12:02 pm
(@finaljustice)
Posts: 91
Trusted Member
Topic starter
 

o problema está exatamente aqui:

ThisWorkbook.Worksheets("Jobs").Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).Name = "joblist"

Esse Cells não tem referência de planilha, e pega a ultima célula somente da planilha ativa...
A dica do Alex é boa, mas não vai funcionar se vc não colocar um ponto no Cells...

with ThisWorkbook.Worksheets("Jobs")
.Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row).Name = "joblist"
End with

p.s.: valeu pelas curtidas naquelas tópicos antigos... são dicas boas e acabam ficando perdidas ! fico feliz que tenham sido úteis !

Hehehe então Fernando, obrigado você!

As atividades do meu trabalho me distanciaram um pouco da execução de trabalhos que exigissem VBA para algo gerencial, mas estou com alguns projetos que desejo fazer e preciso retomar o VBA. Lembrei exatamente da suas dicas que era melhor referenciar os objetos de maneira completa e por isso estou primeiramente brincando com essa planilha para um amigo meu tentando usar as dicas que você me deu para evitar problemas futuros. Tentei fazer uma engenharia reversa com o exemplo que você deu na época, sinceramente muito obrigado pelo seu tempo e disposição em ajudar e tirar dúvidas, sério mesmo!

O meu projeto é um pouco audacioso e provavelmente terei que tirar muitas dúvidas ainda com você e outros membros daqui e acho importante saibam que é muito legal e importante essa ajuda e que sempre que possível mesmo sabendo muito menos que alguns "Ninjas do Excel" eu tento ajudar quem sabe menos do que eu.

Justamente no post antigo foi em que me baseei, eu fiquei me perguntando a razão pela qual você havia usado o WITH e se era necessário. Ai tentei fazer e deu certo e pensei que não era necessário... bem aprendi mais uma coisa!

Por gentileza, você saberia me explicar o porque quando você usa o WITH vc acaba usando o "." antes do Cells? É uma questão de sintaxe? Porque quando não se usa o WITH esse "." não é necessário?

Mais uma vez, muito obrigado.
Att,
Luis

 
Postado : 20/01/2015 12:45 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O With serve para facilitar a leitura horizontal das linhas de código, bem como acelerar mesmo que em nano segundos a execução do código

pensa só, o que é melhor?

workbooks("teste").worksheets("teste).Range("A1").value = "TESTE"
workbooks("teste").worksheets("teste).Range("B1").value = "TESTE"
workbooks("teste").worksheets("teste).Range("C1").value = "TESTE"
workbooks("teste").worksheets("teste).Range("D1").value = "TESTE"
workbooks("teste").worksheets("teste).Range("E1").value = "TESTE"

ou

with workbooks("teste").worksheets("teste)
    .Range("A1").value = "TESTE"
    .Range("B1").value = "TESTE"
    .Range("C1").value = "TESTE"
    .Range("D1").value = "TESTE"
    .Range("E1").value = "TESTE"
end with

O with ajuda a abreviar o códigom entende ? O ponto é essencial para referenciar ao item do With ao invés da planilha ativa. Toda vez que vc não indica qual a planilha que está referenciando, o Excel por padrão entende que é a ativa.

toda linha que começa com um ponto, se refere ao with mais próximo dela.
Sem o ponto, refere-se ao arquivo ativo, ou a planilha ativa...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 20/01/2015 1:09 pm