2017-07-31 1 views
0
If IsArray(payCsv(pay_id)) = False Then 
    'create tempArray 
    lc = 0 
    Debug.Print "create array" 
End If 

If IsArray(payCsv(pay_id)) = True Then 
    Debug.Print " array exists, we should be able to get ubound" 
    lc = UBound(payCsv(0)) - LBound(payCsv(0)) 
    l = l + 1 
End If 

(すなわち第二次元が作成された場合、長さ(UBOUND取得 - 。LBOUND)をVBAコンパイルエラー内部if文私は、私は私の2次元アレイ上UBOUNDを使用できるかどうかを判断するために上記のコードを使用しています

をしかし、条件2が偽であっても、コンパイルエラーが発生します。

1つの配列をテストしていますが、結果が "lc = UBound( "payCsv(0)) - LBound(payCsv(0))"は "配列作成"です。

エラーが発生しました "エラーが予想される配列をコンパイルする"

これはVBAのバグですか?

答えて

2

あなたは、配列の第二次元のUBound関数にアクセスする場合は、フォーマットは次のようになります:

UBound(payCSV, 2) 

この関数のMSDN pageが役に立つかもしれません。

現在のようにpayCSV(0)にアクセスすると、コードでは、payCSV配列の1次元内に1番目の要素が必要であると想定しています。

おそらく、あなたはこれを試してみるとよいでしょうか?

If IsArray(payCsv(pay_id)) = False Then 
    'create tempArray 
    lc = 0 
    Debug.Print "create array" 
Else 
    Debug.Print " array exists, we should be able to get ubound" 
    lc = UBound(payCsv, 2) - LBound(payCsv, 2) 
    l = l + 1 
End If 
+0

OMG ...私はそれを逃したと信じられません。私ができるときに答えを受け入れるでしょう。 – David

関連する問題