le varibili stato(i) vengono correttamente aggiornate e lette all'interno della sub:

codice:
Private Sub ImpaginaFrame()

  Dim coordx As Integer
  Dim coordy As Integer
  
  Dim i As Integer          'contatore
  Dim c As Integer          'contatore
  Dim ContMax As Integer
  
  
  'La variabile     'Stato'     è definita all'inizio del modulo
  

  
   'Coordinate dei FRAME
    coordx = 10440    coordy = 1200       'coordinata di partenza   
   
   
    FrameDati(1).Visible = True
    FrameDati(2).Visible = True
    FrameDati(3).Visible = True
    FrameDati(4).Visible = True
    FrameDati(5).Visible = True
   
   
   [color=red]
    List1.Clear
    List1.AddItem  Check 2= " & frmGraficoCircuito.Check2.Value & "  |    Stato= " & stato(1)
    List1.AddItem  Check 3= " & frmGraficoCircuito.Check3.Value & "  |    Stato= " & stato(2)
    List1.AddItem  Check 4= " & frmGraficoCircuito.Check4.Value & "  |    Stato= " & stato(3)
    List1.AddItem  Check 5= " & frmGraficoCircuito.Check5.Value & "  |    Stato= " & stato(4)
    List1.AddItem  Check 8= " & frmGraficoCircuito.Check8.Value & "  |    Stato= " & stato(5)
   [/color=red]
    
   'Coordinate X
    For i = 1 To 5
      FrameDati(i).Left = coordx
    Next i
    
    ContMax = 5     '5 Frame da impaginare
    
    For i = 1 To ContMax                  'numero di valori
        If stato(i) = True Then
           FrameDati(i).Top = coordy    'Assegna al form interessato la coordinata piu alta
           FrameDati(i).Visible = True                'Visualizza il form interessato
           coordy = coordy + FrameDati(i).Height + 20    'imposta il Coordy successivo
        Else
           FrameDati(i).Visible = False                  'Visibilità
        End If
    Next i

End Sub


in rosso è il codice per leggere le variabili stato(i). Queste variabili sono aggiornate ad ogni richiamo della sub ImpaginaFrame