• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA・セルを選択して並べ替えたい)

エクセルVBA・セルを選択して並べ替える方法

このQ&Aのポイント
  • エクセルVBAを利用して、マウスで選択した範囲のセルを並べ替える方法について教えてください。
  • 具体的には、マウスでセル範囲を選択してから、実行ボタンを押すと、選択したセル範囲が指定した順序で並べ替えられる方法を知りたいです。
  • VBAのソート関数を使用してマウスで選択した範囲のセルを並べ替える方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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オブジェクトは、正しく範囲を設定したほうが良いようです。理由はよく分からないです。

taka1012
質問者

お礼

前回に続いてのご回答ありがとうございます。 確かに自分以外の人も利用することがありますので、ご指摘いただいたことは大切だと痛感しました。 細かいご配慮に感謝いたします。

その他の回答 (1)

  • soixante
  • ベストアンサー率32% (401/1245)
回答No.1

Selection ではダメでしょうか。 Sub sort1() Selection.Sort _   Key1:=Range("d1"), _   Order1:=xlDescending, _   Header:=xlYes, _   Orientation:=xlTopToBottom End Sub

taka1012
質問者

お礼

早速のご回答ありがとうございます。 無事、解決しました。 前回に続いてたいへん、お世話になりました。