[[20081021092112]] 『ソート』(地蔵) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ソート』(地蔵)
 B1:B10全てに入力規則が設定してあり、適当に選択したものを
 他のセルに昇順に並べ替えしてリンクさせたく
 マクロの記録にて下記のようなものを作成しました。 
 ところが下記だとなにかしら行動する度にカーソルがB1:B10に戻り、
 他のセルをいじってても逐一B1:B10に戻る為、大変不便です。
 ただ単に、B1:B10のみをソートさせるだけにするには
 どうしたら宜しいでしょうか?
 Excel2003

Private Sub Worksheet_Change(ByVal Target As Range)

    Range("B1:B10").Select
    Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal
End Sub


 Select をやめれば良いのでは?
 (ROUGE)

 こんな事かと思いましたが・・・・。
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B1:B10")) Is Nothing Then
        Range("B1:B10").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
            :=xlPinYin, DataOption1:=xlSortNormal
    End If
End Sub

 >B1:B10全てに入力規則が設定してあり
 でしたら、並べ替えの Headerは「無し」にしておくのが良いと思います。
 また
 >他のセルに昇順に並べ替えしてリンク
 が、実際にどの様な事を意味しているのか分からないので
 並べ替えに関してのみです。

 あ・・・Select もやめました。
 お好みで戻して下さい。

 (HANA)

 素早い対応ありがとうございます!
 結果はHANAさんの方法で希望通りになりました。

 最初はROUGEさんのようにSelectを外して試したのですが、
 範囲内(B1:B10)なら問題ないのですが、
 それ以外のセルの時にエラーになったんです。
 それで処理方法が分からず教えていただきに参りました。

 >実際にどの様な事を意味しているのか分からないので
 提出用の用紙を作成するにあたって、
 不規則に選択したオプション一覧を
 提出用の用紙に見栄え良く並べたかっただけなんです・・・
 単なる自己満足で申し訳ないです。 (>_<)
 (地蔵)

 エラーになるとは?
 (ROUGE)

 あれっ?
 再発しなくなりました??
 そのときは「メソッドが・・・」
 のようなエラーメッセージが出て
    Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal
 の部分が黄色くなったような・・・
 いらないところまで消してたのかな?

 ただ、Range("B1:B10").Selectを抹消しただけですが (^^;)

 (地蔵)

 何度もすみません。
 新規BOOKで試したら再現しましたので
 出現エラーを報告させていただきます。

 実行時エラー '1004':
 並べ替えの参照が正しくありません。参照が
 並べ替えるデータ内であることと[最優先
 されるキー]ボックスが空白でないことを確認してください。

 (地蔵)

 >  ただ、Range("B1:B10").Selectを抹消しただけですが (^^;)
 いや、そこは消しちゃだめでしょb
 HANAさんのコードをよ〜く目を凝らしてみてください。
 (ROUGE)

 >Select をやめれば良いのでは?
 はもしかしてこーゆーことですか?(恥)

 Private Sub Worksheet_Change(ByVal Target As Range) 
    Range("B1:B10").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal
 End Sub

 ↑は問題なく動作しました!
 (地蔵)

 >実際にどの様な事を意味しているのか分からないので
 これは、
  このコードが、長いマクロの一部なのか
  これだけで完結する物なのか分からない
 と言う意味だったのですが・・・・
 ご希望の様に出来たようで 良かったです。

 「Selection.Sort」→選択しているセル範囲をソート
 するようにエクセルに指示を出したのに
 並べ替えが出来るデータが無いセル範囲(或いはセル)
 が選択されていたら
 「並べ替え出来ないよ!!」
 って言われますよね。
 ですから
 「Range("B1:B10").Sort」この範囲をソートしてね
 ってお願いしてあげて下さい。

 (HANA)

 ご説明、痛み入ります! m(_ _)m
 思いっきり、初歩的なミスですね!
 ちょっと考えればわかりそうなものなのに・・・
 ありがとうございました。

 因みにこのマクロはこれだけの代物でした。

 (地蔵)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.