dポイントプレゼントキャンペーン実施中!

エクセルVBA・セルを選択して並べ替えたい

以下の質問では、たいへんお世話になりありがとうございました。
http://oshiete.goo.ne.jp/qa/6203452.html
少し関連した質問をいたします。
具体的に言いますと、マウスでセル範囲を選択して、その選択した範囲を並べ替える、というようなイメージです。(マウスでセル範囲を選択してから、マクロを実行します)
以下のコードで言うと Range("○●:○●").の部分が、マウスで選択した範囲というような具合です。
Sub sort1()
Range("○●:○●").Sort _
Key1:=Range("d1"), _
Order1:=xlDescending, _
Header:=xlYes, _
Orientation:=xlTopToBottom
End Sub
以上、よろしくご教示お願いします。

A 回答 (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オブジェクトは、正しく範囲を設定したほうが良いようです。理由はよく分からないです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/26 18:45

Selection ではダメでしょうか。



Sub sort1()

Selection.Sort _
  Key1:=Range("d1"), _
  Order1:=xlDescending, _
  Header:=xlYes, _
  Orientation:=xlTopToBottom

End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/26 16:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!