[[20150131124715]] 『別のシートを参照して並び替える方法について』(とくと) ページの最後に飛ぶ

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

 

『別のシートを参照して並び替える方法について』(とくと)

すみません、アドバイスの程よろしくお願い致します。

セルの色でソートするコードですが
別のシートをソートする際に、エラーがでます。
その解決方法をどうかアドバイスをお願いします。

エラーの箇所

.Apply '・・・・・・・・・←ここでエラー「参照が正しくありません」

マクロコード
  ↓

Sub 色でソート()
Dim r As Range

    With ActiveWorkbook.Worksheets("Sheet1").Sort  'ActiveSheet.Sort
        '並び替え設定を一旦削除
        .SortFields.Clear

        'b2を含むセル列の黄色色で昇順に並び替える
         For Each r In Range("B2:K2")
            .SortFields.Add(Key:=r, SortOn:=xlSortOnCellColor, _
                         Order:=xlAscending).SortOnValue.Color = RGB(255, 255, 0)
         Next
        '並び替える範囲をA1を含む表全体とする
        .SetRange Range("a1").CurrentRegion
        '一行目を項目列とする
        .Header = xlYes

        '並び替えを実行
        .Apply '・・・・・・・・・←ここでエラー「参照が正しくありません」

    End With
End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


rangeがどのシートか指定しましょう。

 Range("B2:K2")
 ↓
 .Parent.Range("B2:K2")

 Range("a1").CurrentRegion
 ↓
 .Parent.Range("a1").CurrentRegion

(マナ) 2015/01/31(土) 13:21


マナさん

ありがとうございます。

下記で一応動きましたが、コードはこれでよろしいのでしょうか?

Sub 色でソート()
Dim r As Range

    With ActiveWorkbook.Worksheets("Sheet1").Sort  'ActiveSheet.Sort
        '並び替え設定を一旦削除
        .SortFields.Clear

        'b2を含むセル列の黄色色で昇順に並び替える
         For Each r In Worksheets("E絆請求明細").Range("B2:K2")
            .SortFields.Add(Key:=r, SortOn:=xlSortOnCellColor, _
                         Order:=xlAscending).SortOnValue.Color = RGB(255, 255, 0)
         Next
        '並び替える範囲をA1を含む表全体とする
        .SetRange Worksheets("E絆請求明細").Range("a1").CurrentRegion
        '一行目を項目列とする
        .Header = xlYes
        '並び替えを実行
        .Apply

    End With
End Sub

(とくと) 2015/01/31(土) 13:29


並び替えの条件が不明ですが、たぶん期待と違う設定になっていると思います。

 並び替えるシートはSheet1? E絆請求明細?
 条件は1種類?

 >'b2を含むセル列の黄色色で昇順に並び替える

 これの意味をもう少し詳しく説明できますか。

(マナ) 2015/01/31(土) 14:05


マナ さん

すみません、並び替えのシートは、E絆請求明細 のみです。

Sheet1は間違いです。(実務ファイルで試していましたので・・・)

データ範囲は、A:Kで、並び替えが必要なセル範囲は、B:Kです。
条件は、黄色飲みです。

つまり、B〜K列まで順番に黄色のセルを昇順に並び替えるだけの処理です。
(とくと) 2015/01/31(土) 14:54


であれば問題無いです。

 Dim ws as worksheet
 set ws=Worksheets(""E絆請求明細")

 と変数の利用もよいかも知れません。

(マナ) 2015/01/31(土) 15:18


マナさん

ありがとうございます。できました。

解決です。
(とくと) 2015/01/31(土) 15:46


コメント返信:

[ 一覧(最新更新順) ]


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