###やりたいこと
並び替えボタンを設置して、データを入力後ボタンを押すと並び替えをしてくれるようにする。
データに関しては、H列~R列までが一行のデータになってます。
一番最初にデータが入るのはH11からです。
H列には名前が入る予定ですので、その名前でソートがかけれればOKです。
###一応試してみたこと
VBA
1Range("H10").Select // H10は見出しです 2ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear 3ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add Key:=Range _ 4 ("H10:H16"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal // とりあえずデータをH11~H16までテストで入れているとしています 5With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort 6 .Header = xlYes 7 .MatchCase = False 8 .Orientation = xlTopToBottom 9 .SortMethod = xlPinYin 10 .Apply 11End With
なんかこんな感じで、できたのはできました。
###質問
現在のコードだと、sheet1しか適用されてないと思うので、
「現在、アクティブになっているシート」として適用したい。
現在のコードではデータが入っている部分だけになっていますが、
「データの最終行(間に空白無し)までを範囲としてソート」として適用したいと思います。
上記コードでたぶんここを替えるんだろうとは思ったのですが、その辺りが少し理解していないので、よろしくお願いできますか?
【追記】
一応動作しました。どこかがおかしくなっているのかもしれませんが、とりあえずやりたい動きをしています。
VBA
1// ActiveSheetに関して 2// 回答の前にとりあえず、、、 3Activeworkbook.Activesheet.AutoFilter.Sort.SortFields.Clear 4// 書いてる間に回答があったので、、、 5Const topleft = "H11" 6With Activesheet 7 .Range(topleft & ":R" & .Range(topleft).End(xlDown).Row).Sort key1:=Range(topleft) 8End With
で、とりあえず動作しましたが、なんかちょっとしたエラー?で
.Orientation = xlTopToBottom
が、なんかありません?みたいのが出てて消したら特に問題もなかったです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/28 08:04
2016/04/28 08:45
2016/04/28 09:19