私はおそらく異常な何かをしようとしている知っている。すべてのFormatConditionオブジェクトをControls FormatConditionsコレクションから保存(および削除)する必要があります。その後、同じFormatConditionオブジェクトを同じコントロールに再作成/再適用する必要があります。Copy FormatConditionオブジェクトからカスタムコレクション
私はそれらを正常にコピーできますが、自分のコレクションオブジェクトから同じ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
typo。私はそれを修正します。 – HK1
好奇心から逃れて、反復処理中のオブジェクトの 'For'ループ内で削除を行うのはなぜですか?私も同じことをやったことがありますが、潜在的な異常については妄想的になり、ループの後に削除またはNothingに設定する方が好きです。それはあまりにも悪いです。アクセスは '.ClearFormats'と同等のものを持っていないようですが、私は間違っている可能性があります。 – Zairja