Dictionary Object in Windows XP

A

Alan Beban

I previously ran the following code in xl2000, Windows98

Sub AB1()
Dim x As Dictionary
Dim arr(1 To 11, 1 To 1), arr2
arr = Range("A1:A11")
Set x = New Dictionary
On Error Resume Next
For Each Elem In arr
x.Add Item:=Elem, key:=CStr(Elem)
Next
On Error GoTo 0

'Load a 0-based horizontal array with the unique
'elements from the Dictionary Object
arr2 = x.Items
End Sub

I upgraded to WindowsXP and am still running xl2000. In my file with
the above code, in the VBE, clicking Tools|References shows that
Microsoft Scripting Runtime is available (i.e., it is included in the
list and has a checkmark alongside it). The above code, though, produces
an error message at the first line--Can't find project or library.

What am I doing wrong?

Thanks in advance,
Alan Beban
 
R

Robin Hammond

Alan,

Not sure about this specific reference, but it's just possible that the
class id has changed during the Windows upgrade. Try removing the reference
then browse to the specific file and add it back in again. If that doesn't
work, late binding might fix the problem. Much of the time we use early
binding - i.e. setting a reference as you have - during any development
stage, then late binding for deployment in case something changes in future
with a class reference.

Robin Hammond
www.enhanceddatasystems.com
 
T

Tom Ogilvy

After you get the error, go back and look at the references again. Make
sure this workbook is the default project in the VBE (selected in the
project explorer). Anything marked as MISSING now?

(you may have to hit reset before you can get into tools=>references)
 
A

Alan Beban

Tom said:
After you get the error, go back and look at the references again. Make
sure this workbook is the default project in the VBE (selected in the
project explorer). Anything marked as MISSING now?

(you may have to hit reset before you can get into tools=>references)
Thanks for responding, Tom. I had a reference to an Add-in that is
missing. When I unchecked that, the code worked. I have no idea why
that is, but thanks for the pointer.

My next step is to get that Add-in into the available libraries.

Change of subject. When I was working in Windows98 I had a lot of
procedures in xl2000 files, not preceded by the Option Explicit
statement, in which I didn't declare variables before using them (yeah,
yeah, I know!). They worked fine. Having upgraded to WindowsXP, and
still working in xl2000, those procedures now give me an error
message--Can't find project or library--for any variables not explicitly
declared. Is that a feature of WindowsXP?

Thanks again Tom,
Alan Beban
 
T

Tom Ogilvy

I have used windows 2000 under Windows XP and did not receive errors for
undeclared variables. So I don't think it is a change in behavior.

I can only think that when it sees the undeclared variable, it causes the
compiler to search for a definition in the libraries. In doing so, it must
try to access a missing library, similar to the previous problem. That is
where I would start looking.
 
A

Alan Beban

Tom said:
I have used windows 2000 under Windows XP and did not receive errors for
undeclared variables. So I don't think it is a change in behavior.

I can only think that when it sees the undeclared variable, it causes the
compiler to search for a definition in the libraries. In doing so, it must
try to access a missing library, similar to the previous problem. That is
where I would start looking.
Thanks. On looking back on it I'm sure you must be right. The error
message was "Can't find project or library", not "Variable not defined".
After removing missing library entry to solve the Dictionary problem,
I subsequently noticed the non-declaration issue has gone away.

Thanks again,
Alan Beban
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top