VBAを動かすにはちょっと従来と違うようなので、そのあたりにも触れる。




2003以前では「セキュリティ」は

・最高:信頼できる場所にブックがあることが必要

・高:信頼できる作成者の署名があることが必要

・中:実行前に警告し、マクロの有効/無効をユーザーが選択

・低:無条件にマクロを有効化

であり、信頼できる作成者か否かの登録が可能であった。




2007では「セキュリティ センター」で管理するようである。

「マクロの設定」画面では

信頼できる場所にない場合として、便宜的に番号を振るが、次の4つがある。

1.警告せず無効化

2.警告を表示して無効化

3.署名されたマクロを除き無効化

4.無条件に有効化

がある。




どうやら、1.は最高、3.は高、4.は低、にあたるようであり、1.では不親切なので2.ができたのかなと思われる。また、中にあたるものは廃止になったようである。


このページには「開発者向けのマクロ設定」があるが、VBAプロジェクトオブジェクトモデルへのアクセスを"信頼"というのが今のところ不明である。




色でのフィルタリングも可能になっている。


記録したものを抜き出してみると


1. 文字を1つ指定

ActiveSheet.Range("$C$20:$BU$36").AutoFilter Field:=10, Criteria1:="60S"


2. 文字を複数指定

ActiveSheet.Range("$C$20:$BU$36").AutoFilter Field:=10, Criteria1:=Array( "1", "3" ), Operator:=xlFilterValues


3. セルの色を指定

ActiveSheet.Range("$C$20:$BU$36").AutoFilter Field:=10, Criteria1:=RGB(204, 255, 204), Operator:=xlFilterCellColor


4. 文字の色を指定

ActiveSheet.Range("$C$20:$BU$36").AutoFilter Field:=10, Criteria1:=RGB(255, 0, 0), Operator:=xlFilterFontColor




それぞれの引数 Operator を比較すると一目瞭然で、これで「何をフィルタリングするのか」が決まる。

文字、セル色、文字色の条件を組み合わせての指定はできないようであった。




なお、VBAからは離れるが、文字を複数指定は、候補リストがチェックボックス付きのリストであり、非常に選択が容易であった。




2007からは色のソートがサポートされているが、複数の色を指定順/パレット順/コード順などで並べ替えてくれる訳ではなく、どうやら指定した色を上位に持ってくるだけのようだ。


以下に記録したコードを記載する。




Sub Macro1()

'

' Macro1 Macro

'


'

Range("K33").Select

ActiveWorkbook.Worksheets("xxxx").AutoFilter.Sort.SortFields.Clear

ActiveWorkbook.Worksheets("xxxx").AutoFilter.Sort.SortFields.Add(Range( _

"K21:K599"), SortOnFontColor, xlAscending, , xlSortNormal).SortOnValue.Color = _

RGB(255, 0, 0)

With ActiveWorkbook.Worksheets("xxxx").AutoFilter.Sort

.SetRange Range("C20:BU599")

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

End Sub




SortOnValue はヘルプでは見つからなかった。オブジェクトブラウザで調べるとはObject 型のプロパティだそうである。