質問

い申し込みVBAを与えるマイVB.Net dll一二次バリアントだ。この配列は、各コンポーネントが含まれており、別の配列を含む。

用していただきたいと思いこの二つの位置の配列になります。時を使用していVBAで直接アクセスからのデータの各位置によって:

dataArray(index, 0) or dataArray(index, 1)

そのための位置の配列が使用できます:

Dim posArray as variant
posArray = dataArray(index)

posArray(0)を含むdataArray(index,0)およびposArray(1)を含むdataArray(index,1)です。

にしたものを使用しておりVB.Netまでのアクセスを直接にデータのように、最初の例です。しかし、ただ一つの次元から二次元配列のようになったのではない可能です。

Dim posArray as Object
posArray = dataArray(index)

う試みでの運用とな配列は正数であります。"

してもそれを動作させるために、たくないの帰属につい:

posArray(0) = dataArray(index, 0)
posArray(1) = dataArray(index, 1)

ありがとうございます。

役に立ちましたか?

解決

あなたはを通してスピンする必要があり、1次元配列を自分で生成します。あなたのためにそれを行うには、.NETには、ライブラリの呼び出しはありません。

dim arraySlice as string[yourArrayWidth]
for index = 0 to yourArrayWidth
  arraySlice[index] = yourArray[4, index]
next

上記の例ではyourArrayのうち、4行目をつかむと、あなたのためarraySliceにそれを固執するでしょう。もちろん、あなたがそのアップをきれいにし、パラメータ(およびcolumnIndexにを受け入れ、垂直分割のため別の関数)としてrowIndexプロパティを受け入れる関数にそれを置くことになるでしょう。

それはあなたがあなた自身のユーティリティライブラリに長年にわたって収集するだろうと、このような小さな機能です。 5年後、あなたはArraySliceをする必要がありますし、あなたはすでにそれを行うための機能を持っています。

他のヒント

Dim Dim1Len As Integer = 5
Dim Dim2Len As Integer = 2
Dim DimToExtract As Integer = 2
Dim inMultiDArr(5, 2) As Integer
inMultiDArr = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}}
Dim outSingleDArr(5) As Integer
outSingleDArr = {0, 0, 0, 0, 0}

Buffer.BlockCopy(inMultiDArr, Marshal.SizeOf(GetType(Integer)) * Dim1Len * (DimToExtract - 1),
                 outSingleDArr, 0, Marshal.SizeOf(GetType(Integer)) * Dim1Len)

BlockCopy のoutSingleDArr'が含まれま{ 6, 7, 8, 9, 10 }.上記の由来となった このポスト.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top