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

よろしくお願いします。いつもgooの皆さんには大変お世話になっています
以下のマクロは、セル$B$14がWクリックされたら、 $B$14の左1文字を判断して
ソートするマクロです

gooの皆さんに教えていただいたマクロを一部改良しています
例 $B$14の左1文字は↓or↑で ↓タイトル のようになっています

このマクロを次のように手直ししたいのですが、どなたか教えてください

1、↓タイトル の時にWクリックしたら タイトルが ↑タイトル になって降順でソートする
2、↑タイトル の時にWクリックしたら タイトルが ↓タイトル になって昇順でソートする

1と2をWクリックする度に切り替えるということはフラッグ(スイッチ?)を使うのでしょうか
であれば、どこか、特定のセルをひとつ使って、そのセルに現在のフラッグ(スイッチ?)を
書き込むのでしょうか?
マクロをどう手直しすればよいでしょうか?
どなたか教えてください

以下が現状のソートマクロです

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Address = "$B$14" Then
'Cancel = True
    'Cancel=True を加えると、オリジナルの動作(セル内編集)をキャンセル
'以後はマクロが終了してもダブルクリックで編集モードに入ることは不可
Dim Skey As Integer
Dim SortArea As String 'ソート範囲

SortArea = "B15:CT50" 'ソート範囲

Select Case Left(Target.Value, 1)
Case "↓"
Skey = 1
Case "↑"
Skey = 2
Case Else
Exit Sub
End Select

Range(SortArea).Sort _
Key1:=Range("B15"), _
Order1:=Skey, _
Header:=xlNo, _
Orientation:=xlTopToBottom
Cancel = True
'xlAscendingまたは1  昇順
'xlDescendingまたは2 降順
'1や2の数値でもどっちでもよい
'xlTopToBottom 省略可能
End If
End Sub

質問者からの補足コメント

  • HAPPY

    あと、以下も新しく知りました
    .Value = Replace(.Value, str, "↑")
    セルの左一文字をどうやって書き換えるのかがさっぱり思いつきませんでした
    どうもありがとうございました

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/11/26 23:08

A 回答 (1件)

こんばんは!



他の方がお考えになったコードに手を加えるのは本意でないので、
当方なりにやってみました。
今回の場合はフラグは考えなくて良いと思います。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim str As String, myArea As Range
With Target
If .Address = "$B$14" Then
Cancel = True
str = Left(.Value, 1)
Set myArea = Range("B15:CT50")
If str = "↑" Then
myArea.Sort key1:=Range("B15"), order1:=xlAscending, Header:=xlNo
.Value = Replace(.Value, str, "↓")
Else
myArea.Sort key1:=Range("B15"), order1:=xlDescending, Header:=xlNo
.Value = Replace(.Value, str, "↑")
End If
End If
End With
End Sub

こんな感じでよいのでしょうか?m(_ _)m
この回答への補足あり
    • good
    • 0
この回答へのお礼

tom04さんこんばんは
いつもお世話になってまして恐縮しています

あっという間の回答にびっくりです
なぜこんなに速くコードが書けるのか不思議でなりません
自分の頭の固さはどうしようもありません

早速コピーして動作確認したところ、前々から考えていたことが
一瞬のうちにできてしまいました

このコードの応用で他のセルもやってみようと思います
これから、じっくり勉強させてください

また引き出しがひとつ増えてうれしい限りです
ありがとうございました

With Targetは一番最初に教えていただきました
この書き方は今後見習わなければいけません

どうもありがとうございました
助かりました

お礼日時:2015/11/26 22:58

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