2 votes

Erreur VBA-runtime 9 indice hors plage

Je dois remplir un tableau stockéata60 à partir d'une cellule dynamique A1 de la feuille6 toutes les trente secondes. Ce tableau doit être réinitialisé à zéro toutes les 30 minutes. La boîte de message affichera un message si la différence entre les maxima et les minima est supérieure à 7. J'ai 4 sous-types pour cette activité. Je reçois une erreur d'exécution 9 subscript out of range. L'erreur apparaît à la première ligne de ma_procédure. Ci-dessous le code :

Public RunWhen As Double    
Public Const cRunWhat = "my_Procedure"  
Dim I As Integer, n50max As Double, n50min As Double, Max_Min As Double, storedata60() As Double    

Option Explicit 

Sub StartTimer()    
    RunWhen = Now + TimeSerial(0, 0, 30)    
    Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _    
      schedule:=True    
End Sub 

Sub StopTimer() 
   On Error Resume Next 
   Application.OnTime earliesttime:=RunWhen, _  
       procedure:=cRunWhat, schedule:=False 
End Sub 

Sub my_Procedure()  
    storedata60(I) = ThisWorkbook.Sheets("Sheet6").Range("A1").Value    
    n50max = Application.WorksheetFunction.Max(storedata60) 
    n50min = Application.WorksheetFunction.Min(storedata60) 
    Max_Min = n50max - n50min   
    If Max_Min >= 7 Then MsgBox Max_Min 
    I = I + 1   
    ReDim storedata60(I)    
    If I = 60 Then Call reset_zero  
    If I <> 60 Then Call StartTimer 
End Sub 

Sub reset_zero()    
    I = 0   
    Call StartTimer 
End Sub

0voto

J.schmidt Points 729

Vous devez dimensionner votre tableau stockéata60() :

dim storedata60("size you need for this array") as double

EDITAR:

sinon vous devriez redimer votre tableau avant de lui donner une valeur :

Sub my_Procedure() 
ReDim storedata60(I) 
storedata60(I) = ThisWorkbook.Sheets("Sheet6").Range("A1").Value    
'Following code
End Sub

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X