私はおそらくある種の異常なことをしようとしていることを知っています。Controls の FormatConditions コレクションからすべての FormatCondition オブジェクトを保存 (および削除) する必要があります。その後、同じ FormatCondition オブジェクトを同じコントロールに再作成/再適用する必要があります。
それらを正常にコピーできるようですが、自分の Collection オブジェクトから同じ FormatCondition オブジェクトを再適用しようとするとエラーが発生します。ここで起こっていることは、私が思っているように、実際には SaveAndDelete ルーチンでオブジェクトをコピーしていないということだと思います。その場合、これらのオブジェクトを実際に複製して、f.Delete を実行した後もオブジェクトが保持されるようにするにはどうすればよいでしょうか。
Private SavedFC As New Collection
Private Sub SaveAndDeleteFormatConditions(c as Control)
Dim f As FormatCondition
For Each f In c.FormatConditions
SavedFC.Add f
f.Delete
Next
End Sub
Private Sub RecreateFormatConditions(c as control)
Dim i As Integer
i = 1
If SavedFC.Count > 0 Then
Dim f1 As FormatCondition, f2 As FormatCondition
For Each f1 In SavedFC
'Error 2467 occurs here: The expression you entered refers to an object that is closed or doesn't exist
Set f2 = c.FormatConditions.Add(f1.Type, f1.Operator, f1.Expression1, f1.Expression2)
With f2
.BackColor = f1.BackColor
.FontBold = f1.FontBold
.FontItalic = f1.FontItalic
.FontUnderline = f1.FontUnderline
.ForeColor = f1.ForeColor
End With
SavedFC(i).Delete
i = i + 1
Next
End If
End Sub