最初に、一番下の行数を求める必要があります。
求め方は
Dim a As Integer
a = 3
Do Until Cells(a, 1).Value = “”
a = a + 1
Loop
a = a – 1
です。これはもう何度も出てきましたが、大変よく使うコードです。
最後のa=a-1は、aのままでは、一番最後の行が空白になってしまうので、
その一つ前に戻します。
このコードを最初に追加します。
そし変更する箇所は Range()と書かれているところです。
一番下の行数はaで求めることができているので、30をaに変えます。
あとはRange()の使い方を参考にして変えていきます。
完成したマクロです。
Sub Macro1()
Dim a As Integer
a = 3
Do Until Cells(a, 1).Value = “”
a = a + 1
Loop
a = a – 1
Range(Cells(3, 1), Cells(a, 5)).Select
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add Key:=Range(Cells(3, 1), Cells(a, 1)) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add Key:=Range(Cells(3, 2), Cells(a, 2)) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(“Sheet1”).Sort
.SetRange Range(Cells(3, 1), Cells(a, 5))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
このコードを見ても全ての意味はわかりません。ですが、とりあえずマクロで記録させてあとは少しコードを
変更することでも、必要としているマクロが作れれば問題ありません。
コードの書き方が分からないときは、いったんマクロを使ってパソコンにコードを書かせる、そしてそれを
変更するというやり方も覚えておいて下さい。