none
O que falta neste código para funcionar? RRS feed

  • Pergunta

  • Boa noite, amigos e espero que tenham tido uma Santa Páscoa.

    O código que vou postar, já funcionou mas não sei porque artes, deixou de me dar resultados e não consigo descortinar a falha.

    Embora o código seja comprido, julgo ser de fácil leitura, porém a falha é que não consigo encontrar.

    Na parte de código destinada à Listbox14, tudo funciona em pleno, a parte do código a seguir, apresenta-me resultados a "0" (Zero), de forma que a Lisbox16 apenas apresenta Zeros e não é isso que está na folha. 

                               

    Podem dar-me a vossa ajuda indicando-me onde está o problema?

    Private Sub CommandButton62_Click() ' COLESTEROL LDL
    
        CheckBox38.Locked = True: CheckBox38.ForeColor = -2147483630 ' preto
        
        ListBox14.Clear: ListBox16.Clear
        Image8.Picture = Nothing
        Label298.Caption = "": Label305.Caption = ""
        Label299.Caption = "": Label297 = ""
        CheckBox38.Value = False: CheckBox38.ForeColor = 12632256 ' CINZENTO
        
    Dim WT As Excel.Worksheet
    Dim COLESlast As Long, COLESRow As Long, TOTCOL As Variant
    Dim TOTb As Integer, TOTd As Integer, TOTli As Integer, TOTa As Integer
    Dim TOTma As Integer, THDL As Integer
        
        Const cstrCOLES As String = "AQ"
        Set WT = ThisWorkbook.Worksheets("REGISTOS")
    
    With WT
    
        COLESlast = .Cells(.Rows.Count, cstrCOLES).End(xlUp).Row
        
        
        For COLESRow = 2 To COLESlast
            TOTCOL = .Cells(COLESRow, cstrCOLES).Value
                If TOTCOL <> "" And TOTCOL <> "--" Then
                    If TOTCOL < 100 Then
                        TOTb = TOTb + 1
                    End If
                    If TOTCOL >= 100 And TOTCOL < 130 Then
                        TOTd = TOTd + 1
                    End If
                    If TOTCOL >= 130 And TOTCOL < 160 Then
                        TOTli = TOTli + 1
                    End If
                    If TOTCOL >= 160 And TOTCOL < 190 Then
                        TOTa = TOTa + 1
                    End If
                    If TOTCOL >= 190 Then
                        TOTma = TOTma + 1
                    End If
                End If
                If TOTCOL = "" Or TOTCOL = "--" Then
                    TOTzz = TOTzz + 1
                End If
                
            THDL = TOTb + TOTd + TOTli + TOTa + TOTma
        Next COLESRow
    
         With Me.ListBox14
          	.ColumnCount = 4
            .AddItem
              ListBox14.ColumnWidths = "120;105;90;10"
            .List(.ListCount - 1, 0) = "< 100"
            .List(.ListCount - 1, 1) = TOTb
            .List(.ListCount - 1, 2) = Format((TOTb * 100) / (COLESlast - 1), "0.00")
            .List(.ListCount - 1, 3) = " %"
            
            .AddItem
            .List(.ListCount - 1, 0) = "100 - 129"
            .List(.ListCount - 1, 1) = TOTd
            .List(.ListCount - 1, 2) = Format((TOTd * 100) / (COLESlast - 1), "0.00")
            .List(.ListCount - 1, 3) = " %"
            
            .AddItem
            .List(.ListCount - 1, 0) = "130 - 159"
            .List(.ListCount - 1, 1) = TOTli
            .List(.ListCount - 1, 2) = Format((TOTli * 100) / (COLESlast - 1), "0.00")
            .List(.ListCount - 1, 3) = " %"
            
            .AddItem
            .List(.ListCount - 1, 0) = "160 - 189"
            .List(.ListCount - 1, 1) = TOTa
            .List(.ListCount - 1, 2) = Format((TOTa * 100) / (COLESlast - 1), "0.00")
            .List(.ListCount - 1, 3) = " %"
            
            .AddItem
            .List(.ListCount - 1, 0) = ">= 190"
            .List(.ListCount - 1, 1) = TOTma
            .List(.ListCount - 1, 2) = Format((TOTma * 100) / (COLESlast - 1), "0.00")
            .List(.ListCount - 1, 3) = " %"
            
            .AddItem
            .List(.ListCount - 1, 0) = "Valores Inexistentes"
            .List(.ListCount - 1, 1) = TOTzz
            .List(.ListCount - 1, 2) = Format((TOTzz * 100) / (COLESlast - 1), "0.00")
            .List(.ListCount - 1, 3) = " %"
            
        End With
    
    	Label283.Caption = Label335.Caption & " " & CommandButton62.Caption
    	Label305.Caption = "COL. LDL P/ SEXO"
    	'=============================== APURA VALORES PARA LDL por sexo
    
        Dim TOTmaB As Integer, TOTmaD As Integer, TOTmaL As Integer
        Dim TOTmaA As Integer, TOTmaMA As Integer
        Dim TOTfmB As Integer, TOTfmD As Integer, TOTfmL As Integer
        Dim TOTfmA As Integer, TOTfmMA As Integer
        
            For COLESRow = 2 To COLESlast
                TOTCOL = .Cells(COLESRow, cstrCOLES).Value
                    If TOTCOL <> "" And TOTCOL <> "--" And Range("D" & COLESRow) = "M" Then
                            If TOTCOL < 100 Then
                                TOTmaB = TOTmaB + 1
                            End If
                            If TOTCOL >= 100 And TOTCOL < 130 Then
                                TOTmaD = TOTmaD + 1
                            End If
                            If TOTCOL >= 130 And TOTCOL < 160 Then
                                TOTmaL = TOTmaL + 1
                            End If
                            If TOTCOL >= 160 And TOTCOL < 190 Then
                                TOTmaA = TOTmaA + 1
                            End If
                            If TOTCOL >= 190 Then
                                TOTmaMA = TOTmaMA + 1
                            End If
                    End If
                    
                    If TOTCOL <> "" And TOTCOL <> "--" And Range("D" & COLESRow) = "F" Then
                            If TOTCOL < 100 Then
                                TOTfmB = TOTfmB + 1
                            End If
                            If TOTCOL >= 100 And TOTCOL < 130 Then
                                TOTfmD = TOTfmD + 1
                            End If
                            If TOTCOL >= 130 And TOTCOL < 160 Then
                                TOTfmL = TOTfmL + 1
                            End If
                            If TOTCOL >= 160 And TOTCOL < 190 Then
                                TOTfmA = TOTfmA + 1
                            End If
                            If TOTCOL >= 190 Then
                                TOTfmMA = TOTfmMA + 1
                            End If
                    End If
            Next COLESRow
            
                With Me.ListBox16
                  .ColumnCount = 4
                    .AddItem
                        ListBox16.ColumnWidths = "135;90;90;10"
                    .List(.ListCount - 1, 0) = "-----  < 100  -----"
                    .List(.ListCount - 1, 1) = ""
                    .List(.ListCount - 1, 2) = ""
                    .List(.ListCount - 1, 3) = Format((TOTmaB + TOTfmB) * 100 / (THDL), "0.00") & "  "
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "M"
                    .List(.ListCount - 1, 1) = TOTmaB
                    .List(.ListCount - 1, 2) = Format((TOTmaB * 100) / (THDL), "0.00")
                    .List(.ListCount - 1, 3) = " %"
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "F"
                    .List(.ListCount - 1, 1) = TOTfmB
                    .List(.ListCount - 1, 2) = Format((TOTfmB * 100) / (THDL), "0.00")
                    .List(.ListCount - 1, 3) = " %"
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "----- 100 - 129 -----"
                    .List(.ListCount - 1, 1) = ""
                    .List(.ListCount - 1, 2) = ""
                    .List(.ListCount - 1, 3) = Format((TOTfmD + TOTmaD) * 100 / (THDL), "0.00") & "  "
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "M"
                    .List(.ListCount - 1, 1) = TOTmaD
                    .List(.ListCount - 1, 2) = Format((TOTmaD * 100) / (THDL), "0.00")
                    .List(.ListCount - 1, 3) = " %"
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "F"
                    .List(.ListCount - 1, 1) = TOTfmD
                    .List(.ListCount - 1, 2) = Format((TOTfmD * 100) / (THDL), "0.00")
                    .List(.ListCount - 1, 3) = " %"
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "----- 130 - 159 -----"
                    .List(.ListCount - 1, 1) = ""
                    .List(.ListCount - 1, 2) = ""
                    .List(.ListCount - 1, 3) = Format((TOTmaL + TOTfmL) * 100 / (THDL), "0.00") & "  "
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "M"
                    .List(.ListCount - 1, 1) = TOTmaL
                    .List(.ListCount - 1, 2) = Format((TOTmaL * 100) / (THDL), "0.00")
                    .List(.ListCount - 1, 3) = " %"
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "F"
                    .List(.ListCount - 1, 1) = TOTfmL
                    .List(.ListCount - 1, 2) = Format((TOTfmL * 100) / (THDL), "0.00")
                    .List(.ListCount - 1, 3) = " %"
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "----- 160 - 189 -----"
                    .List(.ListCount - 1, 1) = ""
                    .List(.ListCount - 1, 2) = ""
                    .List(.ListCount - 1, 3) = Format((TOTmaA + TOTfmA) * 100 / (THDL), "0.00") & "  "
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "M"
                    .List(.ListCount - 1, 1) = TOTmaA
                    .List(.ListCount - 1, 2) = Format((TOTmaA * 100) / (THDL), "0.00")
                    .List(.ListCount - 1, 3) = " %"
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "F"
                    .List(.ListCount - 1, 1) = TOTfmA
                    .List(.ListCount - 1, 2) = Format((TOTfmA * 100) / (THDL), "0.00")
                    .List(.ListCount - 1, 3) = " %"
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "-----  > 190  -----"
                    .List(.ListCount - 1, 1) = ""
                    .List(.ListCount - 1, 2) = ""
                    .List(.ListCount - 1, 3) = Format((TOTmaMA + TOTfmMA) * 100 / (THDL), "0.00") & "  "
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "M"
                    .List(.ListCount - 1, 1) = TOTmaMA
                    .List(.ListCount - 1, 2) = Format((TOTmaMA * 100) / (THDL), "0.00")
                    .List(.ListCount - 1, 3) = " %"
                    
                    .AddItem
                    .List(.ListCount - 1, 0) = "F"
                    .List(.ListCount - 1, 1) = TOTfmMA
                    .List(.ListCount - 1, 2) = Format((TOTfmMA * 100) / (THDL), "0.00")
                    .List(.ListCount - 1, 3) = " %"
                    
                End With
      
    End With
    
    Label294.Caption = TOTa + TOTma
    Label293.Caption = " Utentes com Colesterol Elevado"
    Label295.Caption = Format((TOTa + TOTma) * 100 / (COLESlast - 1), "0.00") & " %"
    Label297 = COLESlast - 1
    
    End Sub

    Muito agradecido

    MASL


    M_A_L




    • Editado M_A_S_L domingo, 5 de abril de 2015 22:44
    domingo, 5 de abril de 2015 21:02

Respostas

  • Amigos, Resolvido.

    Incluí todo o código de seleção de variáveis no 1º bloco de código e com as variáveis obtidas, preenchi as Listbox.

    Mas continuo sem perceber porque funcionava umas vezes e outras não...

    Cumprimentos


    M_A_S_L

    • Marcado como Resposta M_A_S_L segunda-feira, 6 de abril de 2015 21:23
    segunda-feira, 6 de abril de 2015 21:23
  • M_A_S_L,

    não sei se é apenas isso, mas note que vc definiu:

    Const cstrCOLES As String = "AQ"

    A coluna "AQ" corresponde à coluna 43 e não 42 como no seu exemplo. Ou seja, vc pode estar trabalhando com colunas erradas dependendo de sua aba ativa.

    Abraço.



    Filipe Magno

    • Marcado como Resposta M_A_S_L sexta-feira, 28 de outubro de 2016 23:38
    terça-feira, 7 de abril de 2015 01:12

Todas as Respostas

  • Bom dia.

    Relativamente a este post, há qualquer coisa de esquesito que não entendo.

    Se substituir a linha de código:

    TOTCOL = .Cells(COLESRow, cstrCOLES).Value

    por:

    TOTCOL=.CELLS(COLESRow, 42).Value

    e gravar no quadro do Visual Basic, por vezes apresenta-me os resultados corretos na ListBox16, mas se gravo as alterações na folha1, deixa de me apresentar os resultados e apresenta Zeros.

    O que poderá estar a acontecer?

    Cumprimentos


    M_A_S_L

    segunda-feira, 6 de abril de 2015 10:06
  • Amigos, Resolvido.

    Incluí todo o código de seleção de variáveis no 1º bloco de código e com as variáveis obtidas, preenchi as Listbox.

    Mas continuo sem perceber porque funcionava umas vezes e outras não...

    Cumprimentos


    M_A_S_L

    • Marcado como Resposta M_A_S_L segunda-feira, 6 de abril de 2015 21:23
    segunda-feira, 6 de abril de 2015 21:23
  • M_A_S_L,

    não sei se é apenas isso, mas note que vc definiu:

    Const cstrCOLES As String = "AQ"

    A coluna "AQ" corresponde à coluna 43 e não 42 como no seu exemplo. Ou seja, vc pode estar trabalhando com colunas erradas dependendo de sua aba ativa.

    Abraço.



    Filipe Magno

    • Marcado como Resposta M_A_S_L sexta-feira, 28 de outubro de 2016 23:38
    terça-feira, 7 de abril de 2015 01:12
  • Filipe.

    Tem razão e até podia ser por isso mesmo.

    Mas já funciona que é o importante.

    Obrigado


    M_A_S_L

    quinta-feira, 30 de abril de 2015 14:22