アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2003を使用し、セルの色で並び替えをする際の
VBAの組み方かプログラムを教えて下さい。

A 回答 (3件)

なぜ、CreateObjectとしてるかよく分かりませんが


たぶん、別のEXCELを立ち上げる必要が有るのだろうと言うことにして、

Const xlAscending = 1
Const xlYes = 1

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

Set objWorkbook = objExcel.Workbooks.Open("hogehoge.xls")
Set objWorksheet = objWorkbook.Worksheets("Sheet1")

i = 2

Do Until objExcel.Cells(i, 1) = ""
intColor = objExcel.Cells(i, 2).Interior.ColorIndex
Select Case intColor
Case 3
intSortOrder = 4
Case 4
intSortOrder = 1
Case 6
intSortOrder = 2
Case 41
intSortOrder = 3
End Select
objExcel.Cells(i, 3) = intSortOrder
i = i + 1
Loop

objWorksheet.Range("A1:C" & i - 1).Sort Key1:=objWorksheet.Range("C2"), Order1:=xlAscending, Header:=xlGuess
    • good
    • 0

EXCEL2003では標準でセルの色でソートは出来ません。



VBAでやるとしたら
列を挿入し
Public Function GetColorIndex(ByVal r As Range) As Integer
GetColorIndex = r.Interior.ColorIndex
End Function

でファンクションプロシージャを作成し、カラーインデックスを取得
カラーインデックスでソート

例えば
赤 1
黄色2
青 3
でソートするとしたら、
別途テーブルを作成し
VLOOKUPをかませれば好きなようにソートできます。

この回答への補足

Excel2003でセルの色でソートすることができないのは把握しております。
もし、VBAで組めるのであればその記述方法を教えてほしいと思い質問しました。
ウェブ上で下記の記述がありましたが、「intSortOrder」がダメなようで、実行できない状態です。
よろしければ、問題箇所を教えていただけますでしょうか?


Const xlAscending = 1
Const xlYes = 1

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

Set objWorkbook = objExcel.Workbooks.Open("ファイル場所")
Set objWorksheet = objWorkbook.Worksheets("Sheet1")

i = 2

Do Until objExcel.Cells(i, 1) = ""
intColor = objExcel.Cells(i, 2).Interior.ColorIndex
Select Case intColor
Case 3 intSortOrder = 4
Case 4 intSortOrder = 1
Case 6 intSortOrder = 2
Case 41 intSortOrder = 3
End Select
objExcel.Cells(i, 3) = intSortOrder
i = i + 1
Loop

補足日時:2011/04/19 15:53
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2011/04/19 15:44

エクセル2003までは


セルの色は順序というものはない。ColorIndexでやるとしても、それが常識とか一般的でではない。
だからどういう順序だとなる。
やるにしても作業列に色に先後の順序のコードをVBAで一旦作ってその作業列でソートすることになる。
ソートは「セルの値」でやるのが基本。そのことが割ってないのだろうと思う。色をあらわす文字を何処かの列につくり(これならVBAでやれてやさしいかも)、ユーザー設定リストなどを使うことをj考えては。ツールーオプションーユーザー設定リストで赤、黄、緑、青・・・など定義)
質問表現振りからして、本格的にやるのは、質問者にはVBAでは難しすぎるのでは。
ーー
参考
2007以後
条件付書式などが複雑に拡充された。
http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/e …
の終わりの方を見ること。
「セルの色による並べ替え」の項。 これはマイクロソフトがそのようなプログラムを組んだために出来るものだ。
外にはGoogleで「エクセル2007 色でソート」などで照会したらよい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2011/04/19 15:45

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