Ir para o conteúdo
manuel antonio

[Resolvido] Devolução de valores errados.

Mensagens Recomendadas

manuel antonio

Boa tarde.

Nas linhas de código que seguem abaixo, tenho um ciclo FOR/NEXT que não me está a devolver o resultado correto e não consigo descortinar onde falha o código.

Na coluna "F", as células têm os seguintes valores:

F2 - .Y01 - Y25 - T01 - R50 - Y28 - Y15

F3 - .T12 - T25

F4 - .R65

F5 - .X64 - X13

F6 - .D14 - D85

Cada código é constituído por uma letra e três números, sendo a separação deles feita pelo hífen. O Hífen, está separado dos códigos por um espaço antes e um espaço depois, sendo o Ponto(.), o primeiro carater do texto de cada célula.

O código segue completo, mas só falha no último FOR/NEXT.

Podem ajudar-me a sair desta encruzilhada?

Option Explicit
Sub FillListBox()
Sheets("DADOS").Unprotect
Sheets("DADOS").Select
Dim SOMAMOTI As Integer
Dim SOMAPAR As Integer
Dim START As Integer
Dim i As Integer
Dim MEDID As Integer
ListBox2.Clear
START = 2
While Range("DADOS!F" & START).Value <> ""
If InStr(1, Range("DADOS!F" & START).Value, TextBox5_PROC.Value, vbTextCompare) >= 1 Then
 ListBox2.AddItem Range("DADOS!D" & START).Value & " ........... " & Range("DADOS!E" & START).Value _
 & " ........... " & Range("DADOS!F" & START).Value & " ........... " & _
 Range("DADOS!G" & START).Value & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab _
 & vbTab & vbTab & vbTab & vbTab & START
End If

Label35.Caption = START - 1
If TextBox5_PROC.Value = "" Then
ListBox2.Clear
Label34.Caption = ListBox2.ListCount
End If
START = START + 1
Wend

Dim C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17 As Integer
Dim SOMA As Double
Dim LLINE, CONT As Integer
Dim SMOT, SOMATOT As Integer
'Apanha o número da ultima linha com dados, pela coluna D.
LLINE = Sheets("DADOS").Cells(Cells.Rows.Count, 4).End(xlUp).Row
'Se não tiver dados, marca como sendo a partir da linha 2 (pós cabeçalho)
If LLINE < 2 Then LLINE = 2
'Laço para somar os valores da coluna e separar por escalão etário
For i = 2 To LLINE
 SOMA = SOMA + Range("D" & i).Value
 CONT = CONT + 1
If (Range("D" & i).Value < 5) Then
 C0 = C0 + 1
ElseIf Range("D" & i).Value >= 5 And Range("D" & i).Value < 10 Then
 C1 = C1 + 1
ElseIf Range("D" & i).Value >= 10 And Range("D" & i).Value < 15 Then
 C2 = C2 + 1
ElseIf Range("D" & i).Value >= 15 And Range("D" & i).Value < 20 Then
 C3 = C3 + 1
ElseIf Range("D" & i).Value >= 20 And Range("D" & i).Value < 25 Then
 C4 = C4 + 1
ElseIf Range("D" & i).Value >= 25 And Range("D" & i).Value < 30 Then
 C5 = C5 + 1
ElseIf Range("D" & i).Value >= 30 And Range("D" & i).Value < 35 Then
 C6 = C6 + 1
ElseIf Range("D" & i).Value >= 35 And Range("D" & i).Value < 40 Then
 C7 = C7 + 1
ElseIf Range("D" & i).Value >= 40 And Range("D" & i).Value < 45 Then
 C8 = C8 + 1
ElseIf Range("D" & i).Value >= 45 And Range("D" & i).Value < 50 Then
 C9 = C9 + 1
ElseIf Range("D" & i).Value >= 50 And Range("D" & i).Value < 55 Then
 C10 = C10 + 1
ElseIf Range("D" & i).Value >= 55 And Range("D" & i).Value < 60 Then
 C11 = C11 + 1
ElseIf Range("D" & i).Value >= 60 And Range("D" & i).Value < 65 Then
 C12 = C12 + 1
ElseIf Range("D" & i).Value >= 65 And Range("D" & i).Value < 70 Then
 C13 = C13 + 1
ElseIf Range("D" & i).Value >= 70 And Range("D" & i).Value < 75 Then
 C14 = C14 + 1
ElseIf Range("D" & i).Value >= 75 And Range("D" & i).Value < 80 Then
 C15 = C15 + 1
ElseIf Range("D" & i).Value >= 80 And Range("D" & i).Value < 85 Then
 C16 = C16 + 1
ElseIf Range("D" & i).Value >= 85 Then
 C17 = C17 + 1
End If
Next
'Atribui o valor da média à Label.
Label37.Caption = SOMA / CONT
'Imprime na label os escalões etários
Label57.Caption = C0
Label77.Caption = C1
Label76.Caption = C2
Label60.Caption = C3
Label61.Caption = C4
Label75.Caption = C5
Label63.Caption = C6
Label64.Caption = C7
Label65.Caption = C8
Label66.Caption = C9
Label67.Caption = C10
Label68.Caption = C11
Label69.Caption = C12
Label70.Caption = C13
Label71.Caption = C14
Label72.Caption = C15
Label73.Caption = C16
Label74.Caption = C17
'LIMPA VALORES DA LABEL SE TEXTBOX ESTIVER EMPTY
If TextBox5_PROC.Value = "" Then
Label37.Caption = ""
Label35.Caption = ""
End If
SOMAPAR = 0
SOMATOT = 0
SOMAMOTI = 0
 For SMOT = 2 To LLINE

	 If Len("F" & i) > 1 And Len("F" & i) < 5 Then
			 SOMAPAR = SOMAPAR + 1
	 ElseIf Len("F" & i) > 7 And Len("F" & i) < 11 Then
			 SOMAPAR = SOMAPAR + 2
	 ElseIf Len("F" & i) > 13 And Len("F" & i) < 17 Then
			 SOMAPAR = SOMAPAR + 3
	 ElseIf Len("F" & i) > 19 And Len("F" & i) < 23 Then
			 SOMAPAR = SOMAPAR + 4
	 ElseIf Len("F" & i) > 25 And Len("F" & i) < 29 Then
			 SOMAPAR = SOMAPAR + 5
	 ElseIf Len("F" & i) > 31 And Len("F" & i) < 35 Then
			 SOMAPAR = SOMAPAR + 6
	 ElseIf Len("F" & i) > 37 And Len("F" & i) < 41 Then
			 SOMAPAR = SOMAPAR + 7
	 End If

			 SOMATOT = SOMATOT + SOMAPAR
 Next
	 SOMAMOTI = SOMAMOTI + SOMATOT

Label34.Caption = SOMAMOTI

End Sub

De acordo com o código que envio o resultado deveria ser 13 e devolve-me o valor 15.

Grato pela ajuda que puderem prestar, envio abraços.

M.A.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.