2016-10-12 9 views
0

私はvbaを使って、列2のセルの色と列1の値でデータのダイナミックレンジをソートしています。コードはソート値だけではなく、セルの色を並べ替えるコードを追加すると構文エラーが発生します。私はインターネット上で同様の状況のた​​めに数時間を探しましたが、失敗しました。 (おそらく私は正しいキーワードを知らない)データのダイナミックレンジを1列の値と別の列の色で並べ替える

私が取り組んでいるコードは次のとおりです。私にいくつかの光を投げてください、束に感謝!

Dim oneRange As Range 
Dim aCell As Range 
Dim bCell As Range 

Set oneRange = Selection 
Set aCell = ActiveCell 
Set bCell = ActiveCell.Offset(0, 1) 

oneRange.Sort key1:=aCell, Order1:=xlAscending, Header:=xlYes 

oneRange.Sort Key2:=bCell, _ 
    SortOn:=xlSortOnCellColor, _ 
    Order:=xlAscending, _ 
    DataOption:=xlSortNormal).SortOnValue.Color = _ 
    RGB(198, 239, 206) 

    End Sub 

答えて

0

範囲ソートとワークシートソートを混在させようとしています。

この行には、マクロを記録したときの閉じ括弧が残ります。マクロは、Worksheet SortFields.Addメソッドを使用していました。

DataOption:=xlSortNormal).SortOnValue.Color = _

あなたの質問に基づく正確なマクロを書く方法はありません。 Selection、Activate、ActiveCellなどの使用を避けてください。

これはあなたが始める必要があります:あなたが答えるため

Sub SortData() 
    Dim aColumn As Range, bColumn As Range, Target As Range 

    With ActiveWorkbook.Worksheets("Sheet1") 
     Set Target = .Range("A1").CurrentRegion 
     Set aColumn = .Range("A2", .Range("A" & .Rows.Count).End(xlUp)) 
     Set bColumn = .Range("B2", .Range("B" & .Rows.Count).End(xlUp)) 

     With .Sort 
      .SortFields.Clear 
      .SortFields.Add(bColumn, xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(198, 239, 206) 
      .SortFields.Add Key:=aColumn, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
      .SetRange Selection 
      .Header = xlYes 
      .MatchCase = False 
      .Orientation = xlTopToBottom 
      .SortMethod = xlPinYin 
      .Apply 
     End With 
    End With 
End Sub 
+0

感謝を!状況は5列のデータを処理する必要があります。最初にB列の色とA列の値でソートする必要があります。 –

+0

誤ってEnterキーを押します。私はあなたにVBAを実行しようとすると、 "実行時エラー '1004': 'Object' _Global 'のメソッド' Range 'が失敗し、"。Set aColumn = Range( "A2"、.Range( "A "&.Count).End(xlUp))"私には意味があるので、どうやってデバッグするのか分からないので、事前に感謝してください! –

+0

ドット修飾子がありませんでした。列Aのデータもエラーを引き起こしません。フィルタリングする実際のデータ範囲は何ですか? –

関連する問題