소장품을 정리하는 이상적인 방법
제 절차상, 저는 복수의 환자가 있습니다.collections데이터 템플릿입니다.이러한 컬렉션은 데이터로 저장되고 호출된 다음 반복 프로세스 중에 다시 채우기 위해 비워집니다.제가 할 수 있는 일은 다음과 같습니다.set myCollection = new Collection다시 사용할 수 있도록 정리해야 합니다.
저도 봤어요set myCollection = Nothing기존 컬렉션의 정리를 처리하는 데 선호되는 방법이 있습니까?
저는 이 점을 명확히 하는 기사에서 관련 부분을 발췌했습니다.집합 사용은 집합을 0으로 설정할 때와 집합이 다르게 작동함을 의미합니다.다음 섹션에서는 이에 대해 설명합니다.
컬렉션에서 모든 항목 제거
컬렉션에서 모든 항목을 제거하려면 단순히 없음으로 설정하면 됩니다.
Set Coll = Nothing
여기서 이해해야 할 중요한 점은 컬렉션을 만든 방법에 따라 이 작업이 수행된다는 것입니다.새로 만들기를 선언하거나 세트 및 새로 만들기를 사용하여 컬렉션을 만들 수 있습니다.두 가지 유형을 살펴보겠습니다.
새로 만들기 사용 선언
이 컬렉션을 "없음"으로 설정하면 "개체가 설정되지 않은" 상태로 설정됩니다.새 항목을 추가하면 VBA가 자동으로 컬렉션 변수를 유효한 컬렉션으로 설정합니다.
즉, 컬렉션을 없음으로 설정하면 모든 항목이 비게 됩니다.그런 다음 항목을 컬렉션에 추가하면 이제 한 항목으로 컬렉션이 만들어집니다.이렇게 하면 컬렉션을 쉽게 비울 수 있습니다.
다음 코드는 이를 보여줍니다.
Sub EmptyColl()
' Create collection and add items
Dim coll As New Collection
' add items here
' Empty collection
Set coll = Nothing
' Add item
coll.Add "Pear"
End Sub
여기서 강조해야 할 미묘한 점은 컬렉션을 없음으로 설정하면 실제로는 없음으로 설정되지 않는다는 것입니다.그러므로 당신이 그것을 있는 그대로와 비교하려고 한다면 그것은 작동하지 않을 것입니다.
세트 및 새로 만들기 사용
집합을 사용하여 집합을 만들 때 없음으로 설정한 경우 집합을 다시 만들어야 합니다.0으로 설정한 후 다음 코드에서 new를 사용하여 다시 설정해야 합니다.그렇지 않으면 "Object Variable 또는 With block variable not set" 오류가 표시됩니다.
Sub EmptyCollSet()
' Create collection
Dim coll As Collection
Set coll = New Collection
' Add items here
' Empty collection
Set coll = Nothing
' SET TO NEW BEFORE USING
Set coll = New Collection
' Add item
coll.Add "Pear"
End Sub
모두 제거 – 다른 방법
다음 방법은 컬렉션의 모든 요소도 제거하지만 더 느린 방법입니다.장점은 컬렉션을 만드는 방법에 상관없이 작동한다는 것입니다.
Sub RemoveAll(ByRef coll As Collection)
Dim i As Long
For i = coll.Count To 1 Step -1
coll.Remove i
Next i
End Sub
자세한 내용은 Paul Kelly의 The Ultimate Guide To Collections in Excel VBA를 참조하십시오.
언급URL : https://stackoverflow.com/questions/37820276/ideal-way-of-clearing-out-collections
'programing' 카테고리의 다른 글
| OpenXml sdk 2.0으로 Excel 문서 작성 (0) | 2023.06.14 |
|---|---|
| C# ASP.NET Single Sign-On 구현 (0) | 2023.06.14 |
| 컬렉션 항목의 값을 변경하는 방법 (0) | 2023.06.14 |
| Python xlwt 결함 있는 엑셀 북 만들기 (0) | 2023.06.14 |
| PL/SQL 패키지가 잘못됨 (0) | 2023.06.14 |