Notifications
Clear all

Carregar a menor data

4 Posts
3 Usuários
0 Reactions
1,107 Visualizações
 Luk
(@luk)
Posts: 44
Eminent Member
Topic starter
 

Olá pessoal, tudo bem!

Um tempo atras neste mesmo forum alguém me ajudou com este código, para pesquisar e carregar a maior data, deu muito certo, mas agora estou precisando ao inverso,
pensei que era só ir lá e mudar o sentido do código, mas não foi bem assim não deu certo...Segue o código abaixo:

    Dim L As Double
    Dim Max
    Dim sMax

    Max = ListAgenda.ListItems.Count

    With ListAgenda
        For L = 1 To ListAgenda.ListItems.Count '- 1
            sMax = .ListItems(L).SubItems(5)
            If sMax > Max Then
                Max = .ListItems(L).SubItems(5)
            End If
        Next

     txtHoraLivre = Max

    End With

Então preciso onde for max, que seja min, ao carregar o maior, precisaria que fosse a menor

Agradeço desde já!

 
Postado : 15/05/2018 11:12 am
(@klarc28)
Posts: 971
Prominent Member
 
    Dim L As Double
    Dim Max
    Dim sMax

    Max = ListAgenda.ListItems.Count

    With ListAgenda
        For L = 1 To ListAgenda.ListItems.Count '- 1
            sMax = .ListItems(L).SubItems(5)
            If sMax < Max Then
                Max = .ListItems(L).SubItems(5)
            End If
        Next

     txtHoraLivre = Max

    End With
 
Postado : 15/05/2018 12:17 pm
 Luk
(@luk)
Posts: 44
Eminent Member
Topic starter
 

vou fazer o teste novamente, mas eu já tinha invertido o sinal de < e não tinha dado certo, vou testar e te informo, muito obrigada por me responder

Atenciosamente,
Isabella

 
Postado : 15/05/2018 12:27 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa noite, Isabella

Não tenho o controle ListView registrado em minha máquina pra poder testar, portanto vou tentar um palpite pelo que vi do código:

A linha:
Max = ListAgenda.ListItems.Count

não faz o menor sentido no código substituto, afinal, qual o propósito de comparar (If sMax< Max Then) a quantidade de itens no controle (ListAgenda.ListItems.Count) com cada dado da quinta coluna do LIstView (.ListItems(L).SubItems(5))?

Se forem realmente datas que estão presentes nesse campo, devem oscilar por volta dos 43000 (valores de datas próximas aos dias de hoje, já que o Excel armazena datas como números) e como seu controle dificilmente teria mais do que algumas centenas de dados, a variável Max sempre seria menor que a menor data existente em seu ListView então sMax nunca alternaria seu valor.

Pelo mesmo motivo é que funcionou antes pra vc com relação à máxima data, pq aí sim, qualquer data seria maior do que esta variável.

Portanto, se quiser manter o mesmo código somente alterando o sentido da comparação, faça uma tentativa inicializando a variável com um valor bem alto, maior do que a maior data possível (digamos 100.000).

Obs.: não garanto que vá funcionar - não testei.

 
Postado : 15/05/2018 4:06 pm