2017-07-28 5 views
0

Je crée un formulaire utilisateur qui reçoit autant d'entrées que possible dans un tableau. chaque fois qu'une nouvelle valeur est entrée dans le tableau est fait plus Lors de l'obtention de la deuxième entrée, je reçois l'indice hors de portéeindice en dehors de la plage lors de l'augmentation de la taille du tableau

Sub getFlow() 


Do 
    thisFlow = UserForm4.TextBox1.Value 
    If Val(thisFlow) >= 0 Then 

     If isInitiated = True Then 
      ReDim Preserve flows(1 To UBound(flows) + 1) 
     Else 
      ReDim flows(1) 
      isInitiated = True 
      check = True 
     End If 

      flows(UBound(flows)) = thisFlow 
      UserForm4.TextBox1 = "" 
       With UserForm4.TextBox1 
       .SetFocus 
       .SelStart = 0 
       .SelLength = Len(.Text) 
       End With 
    Else 
     MsgBox "Value should be equal or greater than zero!" 
    End If 

Exit Do 
Loop 

Répondre

0

Vous ne pouvez pas spécifier la limite inférieure lorsque vous ReDim - Vous ne devez spécifier que le nouveau supérieur lié.

ReDim Preserve flows(UBound(flows) + 1) 
+0

** De la file d'attente de révision: ** Puis-je vous demander de s'il vous plaît ajouter un peu plus de contexte autour de votre réponse. Les réponses au code seulement sont difficiles à comprendre. Cela aidera le demandeur et les futurs lecteurs à la fois si vous pouvez ajouter plus d'informations dans votre message. Voir aussi [Expliquer entièrement les réponses basées sur le code] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers). –