前提・実現したいこと
excelのvbaで第一順位:D列、第二順位H列で並び替えを行うマクロを作成中です。
マクロを動作させるシートには5列目から数値が入っており、
A列の値が変更された直前と直後の間に、そこまでの合計を計算する行が挿入されています。
また、この行の移動は不可能です。
合計を計算する行にはA列に何も入力されていないので、
①「マクロ」シートのD3セルを確認。
D3セルにはマクロを動かすシートを選択できるようになっています。
②「マクロ」シートで宣言した名前と同じ名を持つシートの中で
A列が空白セルが出るまで並び替えを実施する。
空白セルが出たらその行を1行飛ばしてループ。
飛ばした先も空白であれば終了。
③「マクロ」シートのD列(3行目以降)が空白になるまで繰り返す。
この機能を実装中に以下の問題が発生しました。
発生している問題・エラーメッセージ
エラーメッセージは出ませんでしたが、ループから抜け出せてないであろう、 フリーズ→強制再起動コンボが発動します。
該当のソースコード
vba
1Sub 並び替え() 2Dim i As Integer 3Dim j As Integer 4Dim k As Integer 5Dim sh As String 6 7 k = 3 8 sh = Worksheets("マクロ").Range("D" & k).Value 9 10 i = ThisWorkbook.Worksheets(sh).Cells(5, 1).End(xlDown).Row 11 j = 5 12 13 On Error Resume Next 14 15 Do 16 'D列に入力がなくなるまで繰り返す 17 If sh <> "" Then 18 19 Do 20 'A5~ 21 'このあたりは問題なさそうです。 22 If Range("A" & j).Value <> "" Then 23 Range("A" & j & ":O" & i).Select 24 ThisWorkbook.Worksheets(sh).Sort.SortFields.Clear 25 ThisWorkbook.Worksheets(sh).Sort.SortFields.Add Key:=Range( _ 26 "D" & j & ":D" & i), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 27 xlSortTextAsNumbers 28 ThisWorkbook.Worksheets(sh).Sort.SortFields.Add Key:=Range( _ 29 "H" & j & ":H" & i), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 30 xlSortNormal 31 32 With ThisWorkbook.Worksheets(sh).Sort 33 .SetRange Range("A" & j - 1 & ":O" & i) 34 .Header = xlYes 35 .MatchCase = False 36 .Orientation = xlTopToBottom 37 .SortMethod = xlPinYin 38 .Apply 39 End With 40 41 j = i + 2 42 i = Cells(j, 1).End(xlDown).Row 43 44 Else 45 Exit Do 46 End If 47 48 Loop 49 'ここまでは問題なさそうです。 50 51 'ここからループから抜け出せていない? 52 k = k + 1 53 54 Else 55 Exit Do 56 End If 57 58 Loop 59 60End Sub 61
補足情報(FW/ツールのバージョンなど)
win7 32bit excel2010です。
回答1件
あなたの回答
tips
プレビュー