아마도 나는 뭔가 비정상적인 일을하려고합니다. Controls FormatConditions 컬렉션에서 모든 FormatCondition 개체를 저장하고 삭제해야합니다. 그리고 나서 나중에 같은 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
오타입니다. 내가 고칠거야. – HK1
호기심에서 벗어나, 반복되는 객체에 대한'For' 루프 내에서 삭제를 선택하는 이유는 무엇입니까? 나는 똑같은 짓을 했었지만 잠재적 인 예외에 대해 편집증에 빠졌고 루프 이후에 'Nothing'을 삭제하거나 설정하는 것을 선호합니다. 그것은 너무 나쁘다. 액세스는'.ClearFormats'와 동등한 것 같지 않지만 틀릴 수도있다. – Zairja