|
返事遅れてすいません構文が難しく悩んでいて八方ふさがりになっていました。
とりあえず処理自体は希望どうりの動きと結果でした。
自分も勘違いしていた部分もあり理解した部分もあるのですが理解できない
部分は、いまだにインターネット又本等で調べているのですがわからず
あつかましのですがもう一度教えてください
vntKeys = Array(0, 1)
カンマがついていたので2次元配列と勘違いしていました。
Array関数は1次元配列のバリアント型なのは納得しましたが、Arrayで列を格納する場合
Array(”A”、”B”、”C”、”D”)又は数字の場合Array(Array(0,1)・・・・
見たいな感じかとおもっていました?
上記文だと
Vntkeys(0)=0’VntKeys(0)に0を格納する
vntKeys(1)=1’VntKeys(1)に1を格納する
と自分は解釈していまあしたが、これで2列をキーとできるのがとても不思議です?
後Private Subの構文も処理がわからず
特に
lngNum = -Int(-(UBound(vntK) + 1) / 3) * 3 - 1 ’///この構文がわからない?
ReDim Preserve vntK(lngNum), vntO(lngNum)
For i = UBound(vntOrders) + 1 To lngNum ’動的配列宣言範囲VntOrdersに1 ’を足した数字〜lngNumまで
vntO(i) = xlAscending ’vnt0で繰り返し参照している部分を昇順にする
Next i iに処理を移行
With rngScope rngScopeに対して同じ処理を行う
For i = lngNum To 0 Step -3 ’///なんでステップ3ずつ?
.Sort _
Key1:=.Cells(1, vntK(i - 2) + 1), _
Key2:=IIf(IsEmpty(vntK(i - 1)), vntK(i - 1), .Cells(1, vntK(i - 1) + 1)), _
Key3:=IIf(IsEmpty(vntK(i)), vntK(i), .Cells(1, vntK(i) + 1)), _
Order1:=vntO(i - 2), _
Order2:=vntO(i - 1), _
Order3:=vntO(i), _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, SortMethod:=xlStroke
後上記配列を使用しないコードを処理してみましたがこちらも処理結果はOKですが
ステップごとに動かして見ましたがE列に連番を振っている部分は確認できましたが
その後は処理が早すぎるため動きが確認できませんでした。
一応報告まで
|
|