条件付き書式の優先順位を変更する

昨日は、条件付き書式の適用範囲を変えると、条件式の参照先が自動で追従する(らしい)ということが分かった。
infoment.hatenablog.com
そこで今日は、指定した条件付き書式の優先順位変更に挑戦する。
f:id:Infoment:20181226215813p:plain

今回は、まずリストボックスに3列目を追加し、「Priority」を表示してみた。
f:id:Infoment:20181226215924p:plain

Private Sub UserForm_Initialize()
    Dim seq() As Variant
    ReDim seq(1 To ActiveSheet.Cells.FormatConditions.Count, 1 To 3)
    Dim i As Long
    Dim FC As FormatCondition
    For i = 1 To UBound(seq)
        Set FC = ActiveSheet.Cells.FormatConditions(i)
            seq(i, 1) = FC.AppliesTo.Address
            seq(i, 2) = FC.Formula1
            seq(i, 3) = FC.Priority
    Next
    
    ListBox1.List = seq
End Sub


どうやらこの方法だと、シート全体における優先順位になってしまうらしい。
試しに、上から二つ目の条件の優先順位がどう変化するか確認した。

f:id:Infoment:20181226220247g:plain

結果を見ると、2列目の優先順位は変化していない。昨日推測した、「適用範囲を変更すると、優先順位が変化する」という予測は、正しくもあり、正しくも無しといったところか。
2月のカレンダー以外が正しく表示されなかった件については、推測するに、今回統合された条件より優先されるべき4,5番目の条件が、統合された2番より下がってしまったことが原因のようだ。
f:id:Infoment:20181226220741p:plain

では、どうするか。とりあえず、まずは他にも統合可能な条件式を統合してみる。すると、優先順位6位の位置にあれば、正しく動くのではないか?と推測できる。
f:id:Infoment:20181226221018p:plain
試してみよう。といっても、どうすればいいか良く判らない。
駄目で元々で、試してみた。

Sub ChangePriorityTest()
    Dim FC As FormatCondition
    Set FC = ActiveSheet.Cells.FormatConditions(2)
        FC.Priority = 6
End Sub

すると、上手くいった。こんな方法で良かったのか。いつものようにコードを色々と試しながら記事を書いていたが、今回はかなりの拍子抜けだった。

しかしここでまた、新たな問題が発生した。「2番目を6番目へ」という、恐らく毎回異なるであろう具体的な「順位」を、果たしてどのように得れば良いのか。

新たな悩みが発生したところで、明日に続きます。

参考まで。