2017-08-02 12 views
0

私はこのラインを介して行わ、分割文字列を含む配列をループしようとしています:
私はforループを介してこのrepHolder()配列をループしようとすると、しかし、罰金といいすべてだ repHolder() = Split(rep, ",")私の配列は互換性がありませんか?

、I毎回、subscript out of rangeエラーが発生しました。

これは意味をなさない。配列をステップ実行すると、毎回最初の要素で失敗します。このライン:

If repHolder(j) = counter Then

Iは、ループの最初の配列に失敗両方とも、0および1からjを設定しようとしました。これは、配列に定義されたサイズがないために私に示唆しています。私はこのようにループすることはできませんが、要素がまだ残っているので、それはまだ私にはほとんど意味がありません。ここで

は私がやろうとしています何のコードブロック全体である:

Dim repHolder() As String 
Dim strHolder() As String 
Dim counter As Variant 
Dim j As Integer 


For Each rep In repNames() 

    repHolder() = Split(rep, ",") 

Next rep 



For Each rangeCell In repComboRange 
k = 1 

Do 

If rangeCell.Value = repCombos(k) Then 'At this point, if rangecell = repcombos(k) 

Range(rangeCell, rangeCell.End(xlToRight)).Copy 
strHolder() = Split(rangeCell.Value, "/") 

    For Each counter In strHolder() 
     Stop 
     For j = 1 To 17 

      If repHolder(j) = counter Then 

答えて

1

あなたはrepNames()をループして、分割(何度も繰り返し、各repName要素のための...)を介して、この新しい配列を設定しています

For Each rep In repNames()  
    repHolder() = Split(rep, ",")  
Next rep 

このループの各反復は、値が直前の反復でその配列に設定されたどのrep素子滴下分割するrepHolder()をリセットします。したがって、最後に行われたRepNames()の要素のみがrepHolder()に分割されています。例えば

RepNames()がどのように見える場合:すべてのこれは何も、最終的な要素ではありませんので、あなたのrepHolder配列が空であることを行っている反復後

その後
Element 0: "james,linda,mahesh,bob" 
Element 1: "rajesh,sam,barb,carrie" 
Element 2: "" 

ブレークポイント(F9)をFor Each rangeCell In repComboRange行に貼り付け、VBEのローカルペインを確認します。その時点でrepHolder()配列に格納されている値を確認してください。私はそこには何もないだろうと思う。

もう1つの奇妙な点は、1から17までループしているということです。repHolder()は0から16になるように0ベースの配列になります。でも...これは実際にはFor各ループ(またはuBound(repHolder)を使用してループ回数を決定する:

For Each counter In strHolder() 
    Stop 
    For each repHolderElem in repHolder 
     If repHolderElem = counter Then 
     .... 
    Next repHolderElem 
+0

ありがとう、私は配列の前の要素を削除し続けていた – Matthew

関連する問題