- ベストアンサー
エクセルVBA・セルを選択して並べ替える方法
- エクセルVBAを利用して、マウスで選択した範囲のセルを並べ替える方法について教えてください。
- 具体的には、マウスでセル範囲を選択してから、実行ボタンを押すと、選択したセル範囲が指定した順序で並べ替えられる方法を知りたいです。
- VBAのソート関数を使用してマウスで選択した範囲のセルを並べ替える方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
試してみてください。 マウスの場合は、位置・範囲が特定できないという意味だと思います。Selection は、必ずしも、セルを選択しているとは限りませんし、また、Range("D1")は、必ずしも、D1 とは限りません。4列目の1行目という意味だと解釈しました。タイトル行は、それが本当にタイトル行としてあるのか分かりません。 いくつかのエラーを考慮すると以下のようになります。 'なるべく標準モジュールに書き込んでください。 Sub Test2() If TypeName(Selection) <> "Range" Then Exit Sub With Selection If .Columns.Count > 3 Then .Sort _ Key1:=.Cells(1, 4), _ Order1:=xlDescending, _ Header:=xlGeuss, _ Orientation:=xlTopToBottom Else MsgBox "4列目がありません。", vbExclamation End If End With End Sub ところで、今回は、Selection ですから、範囲は明示的に決められますが、左端セルだけを選択して、Sortメソッドを掛けると、時々、1行全体を選択したり、うまく範囲が特定出来ないというバグ?が存在しているので、最初のRangeオブジェクトは、正しく範囲を設定したほうが良いようです。理由はよく分からないです。
その他の回答 (1)
- soixante
- ベストアンサー率32% (401/1245)
Selection ではダメでしょうか。 Sub sort1() Selection.Sort _ Key1:=Range("d1"), _ Order1:=xlDescending, _ Header:=xlYes, _ Orientation:=xlTopToBottom End Sub
お礼
早速のご回答ありがとうございます。 無事、解決しました。 前回に続いてたいへん、お世話になりました。
お礼
前回に続いてのご回答ありがとうございます。 確かに自分以外の人も利用することがありますので、ご指摘いただいたことは大切だと痛感しました。 細かいご配慮に感謝いたします。