Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13458 / 13644 ツリー ←次へ | 前へ→

【5303】並び換えについて 123 03/5/5(月) 20:54 質問
【5304】Re:並び換えについて りん 03/5/5(月) 21:19 回答
【5308】Re:並び換えについて 123 03/5/6(火) 11:19 お礼

【5303】並び換えについて
質問  123  - 03/5/5(月) 20:54 -

引用なし
パスワード
   こんにちは123です。

久しぶりに質問させて下さい。

私の持っている参考書に載っていない「並び換え」についてです。

マクロを記録してみたのですが、項目名の行(2行目)までが
ソートの対象になってしまい、次に続く処理がエラーになってしまいます。

VBAコードでのソートの方法を教えて下さい。

1行目は対象外、2行目が項目名で、3行目以降 最後の行(lastrow)までを
昇順にいたいのです。対象の列は icol です。

宜しくお願い致します。

【5304】Re:並び換えについて
回答  りん E-MAIL  - 03/5/5(月) 21:19 -

引用なし
パスワード
   123 さん、こんばんわ。

>1行目は対象外、2行目が項目名で、3行目以降 最後の行(lastrow)までを
>昇順にいたいのです。対象の列は icol です。

3行目以降を対象としてソートすればいいです(タイトル行は無しで)。

Sub test()
  Dim lastrow As Long, lastcol As Integer, icol As Integer
  '↓暫定的に指定
  icol = 3 'C列でソートする例
  '表示しているシートの使用範囲全体をソートする。
  With ActiveSheet
   With .UsedRange
     lastrow = .Cells(.Count).Row
     lastcol = .Cells(.Count).Column
   End With
   '
   If lastrow > 3 and lastcol >= icol Then
     With .Range(.Cells(3, 1), .Cells(lastrow, lastcol))
      .Sort Key1:=.Parent.Cells(3, icol), _
         Order1:=xlAscending, _
         Header:=xlNo, _
         SortMethod:=xlCodePage
     End With
   End If
  End With
End Sub

こんな感じです。
Sortメソッドの引数の詳細についてはヘルプで確認してください。

【5308】Re:並び換えについて
お礼  123  - 03/5/6(火) 11:19 -

引用なし
パスワード
   ▼りん さん:こんばんわ。

ありがとうございました。
そのまま 使わせて頂きました。
(少々急いでいたもんで)

非常に助かりました。

13458 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free