現在、VBA プロジェクトを VB.NET に変換しています。そして、データテーブルのソートに少し問題があります。
私のテーブルは次のようになります:
... | ... | Firstname3 | Name3 | Pay3 | Firstname1 | Name1 | Pay1 | Firstname2 | Name2 | Pay2 |...
... | ... | Firstname2 | Name2 | Pay2 | Firstname3 | Name3 | Pay3 | Firstname1 | Name1 | Pay1 |...
など...データテーブルから必要な56列を配列にエクスポートし、名前で水平方向に並べ替えようとします。私はVBAでそのようにしました:
Public Sub SortTable(ByRef aggTab(,) As Object, ByVal columnToSortOn As Integer, ByVal lowerValue As Byte,
ByVal upperValue As Byte)
Dim ref As Object = aggTab((lowerValue + upperValue) \ 2, columnToSortOn)
Dim refLowerValue As Byte = lowerValue
Dim refUpperValue As Byte = upperValue
Dim temp As Object
Do
Do While aggTab(refLowerValue, columnToSortOn) < ref
refLowerValue = refLowerValue + 1
Loop
Do While ref < aggTab(refUpperValue, columnToSortOn)
refUpperValue = refUpperValue - 1
Loop
If refLowerValue <= refUpperValue Then
For i = LBound(aggTab, 2) To UBound(aggTab, 2)
temp = aggTab(refLowerValue, i)
aggTab(refLowerValue, i) = aggTab(refUpperValue, i)
aggTab(refUpperValue, i) = temp
Next i
refLowerValue = refLowerValue + 1 : refUpperValue = refUpperValue - 1
End If
Loop While refLowerValue <= refUpperValue
If refLowerValue < upperValue Then Call SortTable(aggTab, columnToSortOn, refLowerValue, upperValue)
If lowerValue < refUpperValue Then Call SortTable(aggTab, columnToSortOn, lowerValue, refUpperValue)
End Sub
しかし、コードを VB.NET に変換すると、正しく動作しません。誰かが私に理由を説明できますか? Excelでは完全に機能するためです。