2016-08-22 2 views
-1

私はコードを持っています。後で別のサブで、同じ配列に追加情報を設定しようとしています。私はランタイムエラー9が発生しているため動作していません。私はredimが配列の最初のディメンションで動作しないため、これを行うことができないと言われました。2つの差分サブセットから同じ配列を読み込むことはできますか?

私の質問は、これを行うために別の方法がありますか?以下は私がこれまで持っていたものです。

エラーが行われます。

Sub PartTwo() 

    ReDim WorkArray(1 To GEMclass.NumofP, 1 To 4) 

    For c = 1 To UBound(FullArray, 1)  
     If GEMclass.g = FullArray(c, 1) Then           
      Count = Count + 1 

      WorkArray(Count, 1) = FullArray(c, 1) 
      WorkArray(Count, 2) = FullArray(c, 4) 
      WorkArray(Count, 3) = FullArray(c, 7) 
      WorkArray(Count, 4) = FullArray(c, 6)   
     End If   
    Next c 

    ReDim Preserve WorkArray(1 To GEMclass.NumofP, 1 To 4)     
    CumulativePartners = GEMclass.NumofP 

End Sub 

Sub PartThree() 

    For e = 1 To Count   
     If dict.Exists(WorkArray(e, 2)) Then 

      TempCP = CumulativePartners 
      CumulativePartners = CumulativePartners + dict(WorkArray(e, 2)).NumofP            
      For f = 1 To UBound(FullArray, 1) 

       If WorkArray(e, 2) = FullArray(f, 1) Then         
        For g = 1 To dict(WorkArray(e, 2)).NumofP          
         Dim test As Integer 
         test = TempCP + g 

         WorkArray(test, 1) = FullArray(f, 1)<---Runtime error 9 
         WorkArray(test, 2) = FullArray(f, 4) 
         WorkArray(test, 3) = FullArray(f, 7) 
         WorkArray(test, 4) = FullArray(f, 6)           
        Next g         
       End If 

      Next f     
      ReDim Preserve WorkArray(1 To CumulativePartners, 1 To 4) 
     Else 
      MsgBox "No" 
     End If   
    Next e 

End Sub 
+0

エラーが発生したときの 'test'と' UBound(WorkArray、1) 'の値は何ですか? – Comintern

+0

可能な複製:http://stackoverflow.com/questions/16369217/redim-preserve-to-a-multi-dimensional-array-in-visual-basic-6 – Jeremy

+0

ステップ1: 'Option Explicit'を使用し、変数スコープを理解する。 'WorkArray'はどこに宣言されていますか?誰がPartTwoを呼んでいるのですか?誰がPartThreeを呼びますか? –

答えて

0

手オフ、あなたのスコープが正しくありません。 Part2はPart3のローカル変数のみを参照しようとしています。それは次のようになります。

Option Explicit 

Dim WorkArray(1 to GEMclass.NumofP, 1 To 4) 

Sub PartTwo() 
    'Your code 
End Sub 

Sub PartThree() 
    'Your code 
End Sub 

あなたが同じモジュールでそのようなあなたの宣言を再構築した場合、WorkArrayは両方のサブルーチンで使用可能な変数になります。

関連する問題