私の VBA プログラムには、大量のデータ配列があり、そのサブ配列を常に使用する必要があります。
私の方法は次のとおりです。
Redim subArr(rowBegin to rowEnd)
For r = rowBegin to rowEnd
subArr(r) = bigArr(r)
Next r
この種のサブ配列を参照するより効率的な方法はありますか? ありがとう...
配列の操作は信じられないほど高速であるため、おそらく目に見える利点はありません-小さな配列を埋めるためにループするよりもコーディングの感覚からどのようにアピールするかは理解できます
単一の要素配列を使用している場合、次のことができます。
Join
単一の文字列への区切り記号を持つ大きな配列Split
「マーカー」文字列による大きな配列、次に縮小された文字列を区切り文字で小さな配列に分割します以下のコードは、1 から 100 までの数字を配列にダンプし、上記のように分割して最初の 10 レコードを取り出します。
Sub test()
Dim bigArr
Dim subArr
Dim strSep As String
Dim strDelim As String
Dim strNew As String
Dim rowBegin As Long
Dim rowEnd As Long
strDelim = ","
strSep = "||"
'fill array with 1 to 100
bigArr = Application.Transpose(Application.Evaluate("row(1:100)"))
rowBegin = 1
rowEnd = 10
bigArr(rowEnd + 1) = strSep
'make a single string
strNew = Join(bigArr, strDelim)
'split the string at the marker
vArr = Split(strNew, strSep)
ReDim subArr(rowBegin To rowEnd)
'split the smaller string with the desired records
subArr = Split(Left$(vArr(0), Len(vArr(0)) - 1), strDelim)
End Sub
短い答え:おそらくそうではありません
それほど短い答えではありません:非 0/1 境界を持つサブ配列を作成しているので、元の配列と境界への参照を渡さないのはなぜですか?
ところで: VBA 配列の良いリソースは CPearson のサイトhttp://www.cpearson.com/excel/vbaarrays.htmです。