![]() |
|
|
|
#1
|
||||
|
||||
|
Well... I think its strange to put some code in, just in case there is a bug in the scripting engine.
Methinks you worry too much? Well... Mebelieves is probably more apropriate. I'm always happy to learn, but I am cautious of mythology... I didn't see any authoritative references offered above in support of this practice. I can find plenty refuting it and even more who are confused about it... And there are plenty of structures where it will do nothing at all because there are references to the object elsewhere. Referring to post #7 there are two reasons given for the practice. Regarding the first, see my opening statement. Regarding the second, it is patently untrue I'm afraid: Custom Class Objects and Objects that are instantiated with a New statement do not need to be explicitly deallocated with a Set to Nothing line. They are managed in the same way as any other object again, by counting referrences. And, depending on their archiatecture, it could give the misleading impression that they have been released when they have not. So, to be honest, I don't accept either as a valid reason. |
|
#2
|
||||
|
||||
|
Quote:
http://www.vbi.org/Items/article.asp?id=106 http://www.decisionmodels.com/memlimitsd.htm
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#3
|
|||
|
|||
|
Hi
![]() CoolBlue, as to your question: The loop is there, though it's rather a For ... Next: Code:
.
.
.
For lngItem = 1 To UBound(arrCompare, 1)
If Len(CStr(arrCompare(lngItem, 1))) > 0 Then
objdic(arrCompare(lngItem, 1)) = ""
End If
Next lngItem
.
.
.
Code:
Sub AddCausingError()
Dim objdic As Object
Set objdic = CreateObject("scripting.dictionary")
objdic.Add 1, ""
objdic.Add 1, ""
Set objdic = Nothing
End Sub
Code:
Sub AvoidErrorAdd()
Dim objdic As Object
Set objdic = CreateObject("scripting.dictionary")
objdic.Add 1, ""
If Not objdic.Exists(1) Then
objdic.Add 1, ""
Else
MsgBox "Key already exists"
End If
Set objdic = Nothing
End Sub
Code:
Sub JustOverwrite()
Dim objdic As Object
Set objdic = CreateObject("scripting.dictionary")
objdic(1) = "1stEntry"
objdic(1) = "2ndEntry"
Debug.Print objdic.Count
Debug.Print objdic(1)
Set objdic = Nothing
End Sub
For the other part, well, Paul has provided you by now with some evidence, and there is more out there. I'm pretty aware of other opinions pointing out it's not necessary and I won't interfere if they got the convidence and made up their mind. There are also people believing it's not necessary to declare variables, pointing out that vba comes by default without "Option Explicit". Well, some day they will discover an error and wonder were it comes from ...
|
|
#4
|
||||
|
||||
|
Quote:
I have worked with Collections in the past and haven't delved into Dictionaries so, thanks for opening my eyes. I love it... you just jam in the Keys by referencing by it and set the member to "". And there they all are. Very nice! Using your method on my system it blasts through 100K lines in 1.6 to 2 sec, depending on the data type. The data I used had about 30% "Others". My little Value2 tweak gives a big advantage to the block reads, but its swamped by savings from your Dictionary jggery-pokery, it depends on the data type: Value: Number or Text 1.6 to 1.7 sec Currency 1.8 to 2 sec; Date 2 sec Value2: Number or Text 1.5 sec; Currency 1.5 sec; Date 1.5 sec And Yep. On the matter of the Set to Nothing, obviously its a personal, value choice between equally respectable options. My aim was to just balance the thread so that people can make their own choice based on both arguments. I actually tried removing your error handler and re-adding the first member to the Dictionary to throw an error, just to see what happened and the object was released, according to VBE anyway... Cheers |
|
#5
|
|||
|
|||
|
Quote:
|
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Wierd "script code" in a downloaded .doc file | CNBarnes | Word | 2 | 10-18-2012 02:07 AM |
replace data from variable with "sub and super script" from excel to word by vba
|
krishnaoptif | Word VBA | 9 | 06-22-2012 05:08 AM |
How to choose a "List" for certain "Heading" from "Modify" tool?
|
Jamal NUMAN | Word | 2 | 07-03-2011 03:11 AM |
| Rules and Alerts: "run a script"? | discountvc | Outlook | 0 | 06-15-2010 07:36 AM |
| An "error has occurred in the script on this page" | decann | Outlook | 8 | 09-03-2009 08:54 AM |