January 15, 2016

Excelで文字色やセル色を切り替える/toggleする

Excelをテンポよく使うときにはマウスだけでなくショートカットキーを使えるようになると、とても便利なのですが、そうは言ってもすべてのショートカットキーを覚えるのは大変ですし、セルや文字の色を変更するショートカットは打鍵数が多いため必ずしも便利とは言えません。それほど頻繁に使わない機能であれば、ALTキーから初めて一連のリボンのメニューをたどっていくようにキーを使えば良いですが、文字色を変えるためにいちいちキーを連打するのも煩わしい、ということで、ショートカットキーとマウスによるリボンの操作の間に位置するのがクイックアクセスツールバーかと思います。

クイックアクセスツールバーから任意のマクロを実行できるので、よく使う、比較的複雑な操作をマクロにまとめておき、それをクイックアクセスツールバーに登録すると、マウスでワンクリック、キーボードからはALT→数字で実行できるので便利です。また、マクロをクイックアクセスツールバーに登録する際には表示するアイコンを選ぶことができるので、何の機能なのかを、アイコンを目安に思い出すことができるので便利です。

前置きが長くなってしまいましたが、文字の色を切り替えるマクロを以下に残します。色の順序は設定部分のみ書き換えることで自由に変更できます。カラーインデックスは代表的なものはコメントに残しましたがgoogle等で検索すると色々あることが分かります。
Sub ToggleCellFontColor()
    Dim Default_Color As Integer, ColorSetting() As Variant
    Dim Colors As Collection
    
    ' Color settings
    ' Refer color by ColorIndex
    '1:Black, 2:White
    '3:Red, 4:Green, 5: Blue
    '6:Yellow, 7:Magenta, 8:Cyan
    Default_Color = 1       'black
    ColorSetting = Array(3, 4, 5, 6, 7, 8, 2, 1)
    
    'Configuration for color array
    Set Colors = New Collection
    For i = LBound(ColorSetting) To UBound(ColorSetting)
        Colors.Add CStr(ColorSetting((i + 1) Mod (UBound(ColorSetting) + 1))), CStr(ColorSetting(i))
    Next
    
    'Setting ColorIndex of Font object
    On Error Resume Next
        Selection.Font.ColorIndex = Colors.Item(CStr(Selection.Font.ColorIndex))
    If Err.Number <> 0 Then Selection.Font.ColorIndex = Default_Color
    
End Sub
なお、セルの色を切り替えたい場合は、上記コードのSelection.Font.ColorIndexをSelection.Interior.ColorIndexに修正します。

ColorIndexの一覧:
http://dmcritchie.mvps.org/excel/colors.htm

No comments :

Post a Comment