Notifications
Clear all

Carregar Listbox conforme condição

13 Posts
2 Usuários
0 Reactions
4,303 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde,

Crie um listbox e carrego ele com horários, de intervalos de 30 em 30 minutos. Exemplo:

listbox.additem "08:00"
listbox.additem "08:30"
listbox.additem "09:00"
listbox.additem "09:30"
listbox.additem "10:00"

Porém gostaria que se na planilha já tiver algum dado com este horário, ele não apareça no listbox ou que no lugar do horário apareça o dado que consta na planilha.

Valeu

 
Postado : 07/12/2011 10:23 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Penso que não obtive respostas porque está confuso de entender, por isso coloquei um exemplo em anexo que deve facilitar o entendimento. Desde já agradeço qualquer ajuda.

Abraço

 
Postado : 08/12/2011 3:46 pm
(@edgard-jr)
Posts: 31
Eminent Member
 

Seria Isso?

 
Postado : 08/12/2011 7:38 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá Edgar,

Valeu pela intenção meu caro, mas minha necessidade é bem diferente disso.

Não quero apenas copiar os dados da Planilha 1.

Primeiramente no LIstbox (e não Listview) eu vou carregar horários de 08:00 às 18:00, com intervalo de 30 minutos.

Porém se na planilha 1 houver algum horário de, por exemplo 10:00, na linha do LISTBOX onde seria exibido 10:00, deverá ser exibido a linha da planilha que corresponde as 10:00, juntamente com o nome e o telefone.

Mas valeu pela boa vontade meu caro.

Abraço

 
Postado : 08/12/2011 8:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Para nortear:

Private Sub CommandButton1_Click()
Dim lItem As Double
For lItem = 0 To ListBox1.ListCount - 1
MsgBox ListBox1.List(lItem, 0)
Next
End Sub
 
Postado : 09/12/2011 7:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Opa,

Foi aqui. Simples assim:

Private Sub CommandButton2_Click()
   Dim i As Long
   Dim lItem As Double
   
 For lItem = 0 To ListBox1.ListCount - 1
   For i = 1 To Plan1.Range("A65536").End(xlUp).Row
       If Plan1.Range("A" & i).Value = ListBox1.List(lItem, 0) Then
          ListBox1.List(lItem, 1) = Plan1.Range("B" & i).Value
          ListBox1.List(lItem, 2) = Plan1.Range("C" & i).Value
       End If
   Next i
 Next
End Sub

Um detalhe, essencial, a coluna A deve ter formato texto. Segue o arquivo em anexo.

 
Postado : 09/12/2011 8:03 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Ohh José !!!

Rapaz, a idéia é essa mesma. Brigadão !

A partir do seu exemplo comecei a criar o que eu pretendia (VIDE ANEXO). Que seria uma espécie de agenda com os horários ocupados e os horários disponíveis. Porém na adaptção que fiz notei que apenas o primeiro item foi filtrado, o restante não foi. Se puder me ajudar a descobrir a causa ficarei imensante grato.

Abraço

 
Postado : 09/12/2011 12:35 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

...Porém na adaptção que fiz notei que apenas o primeiro item foi filtrado, o restante não foi...

Na verdade nem entendi como o 1º item foi carregado. Você não executou a instrução que filtra os dados, tente no evento Initialize do form carregar a macro.

Call MECHAMA
 
Postado : 09/12/2011 3:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Então José,

O MECHAMA é sujeira que deixei no formulário. Pois estava testando algumas coisas antes de pedir ajuda.

A adaptação que fiz está no módulo. Adaptei a rotina que você desenvolveu para que seja filtrada com 2 outra condições.

Veja a rotina:

Public Sub Busca_AT1(VALOR As String)

Dim i As Double
Dim Acum As Double
Dim VR As Date
Dim Plan As Worksheet
Dim ATEND As String

ATEND = Sheets("CAD").Range("A2")

Dim exemplo As String
exemplo = FORMAG.MES.Text

Set Plan = Sheets(exemplo)
Sheets(exemplo).Activate



   Dim ii As Long
   Dim lItem As Double
   i = 2
  
'AQUI EU ADAPTEI SUA ROTINA
 For lItem = 0 To FORMAG.ListBox1.ListCount - 1
   For ii = 2 To Plan.Range("A65536").End(xlUp).Row
       If Plan.Range("A" & ii).Value = FORMAG.ListBox1.List(lItem, 0) And Format(Range("B" & i).Value) = VALOR And Range("C" & i).Value = ATEND Then
          FORMAG.ListBox1.List(lItem, 1) = Range("C" & ii).Value
          FORMAG.ListBox1.List(lItem, 2) = Range("D" & ii).Value
          
       End If
        i = i + 1
   Next ii
  
 Next
 
End Sub
 
Postado : 09/12/2011 3:23 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Na variável ii em alguns lugares vc utilizou apenas i, mas acredito que não seja apenas isso

 
Postado : 09/12/2011 3:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não entendi essa parte, meu cobrão.

And Format(Range("B" & ii).Value) = VALOR And Range("C" & i).Value = ATEND

Oque seria VALOR e ATEND??

 
Postado : 09/12/2011 3:41 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Eita José... num é que deu ?

Eu até havia colocado aquelas variáveis diferentes propositalmente, achei que não funcionária se fossem as mesmas, e foi exatamente o contrário....rs.

Valeu José. Te devo essa.

 
Postado : 09/12/2011 4:10 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Deve nada. Afinal é graças à essas ideias que aprendemos um pouco mais. Jamais imaginei uma situação dessas.

Estava verificando o seu arquivo e adaptei alguma coisa. No caso quando o form é ativado vai para plan do mês corresponde baseado na data atual. Sugiro que adapte para mudar de acordo com o mês clicado no calendário e a opção de nome seja por combobox.

 
Postado : 09/12/2011 8:49 pm