VBA-runtime error 9 подпись вне диапазона - PullRequest
0 голосов
/ 08 января 2019

Я должен заполнять массив сохраненных данных60 из динамической ячейки А1 листа6 каждые тридцать секунд. Этот массив будет обнуляться через каждые 30 минут. Окно сообщения выдаст сообщение, если разница максимума и минимума больше 7. У меня есть 4 саба для этого действия. Я получаю подписку ошибки времени выполнения 9 вне диапазона. Это показывает ошибку в первой строке my_procedure. Ниже код:

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 

1 Ответ

0 голосов
/ 08 января 2019

Вы должны определить размер вашего массива storeata60 ():

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

EDIT:

, иначе вам придется переделать ваш массив перед тем, как дать ему значение:

Sub my_Procedure() 
ReDim storedata60(I) 
storedata60(I) = ThisWorkbook.Sheets("Sheet6").Range("A1").Value    
'Following code
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...