![]() |
Option Explicit and Arrays
Just caught a typo.
In Excel 97 VBE, the following general module code doesn't generate a compile error. '---- begin VBA ---- Option Explicit Sub foo() Dim n As Long n = 5 ReDim y(1 To 5) '<- !! MsgBox n End Sub '---- end VBA ---- Is the ReDim line an array variable declaration similar to Dim, or a statement, or a hybrid? Does this work the same in 2K and XP? -- Never attach files. Snip unnecessary quoted text. Never multipost (though crossposting is usually OK). Don't change subject lines because it corrupts Google newsgroup archives. |
Option Explicit and Arrays
Harlan Grove wrote:
Just caught a typo. In Excel 97 VBE, the following general module code doesn't generate a compile error. '---- begin VBA ---- Option Explicit Sub foo() Dim n As Long n = 5 ReDim y(1 To 5) '<- !! MsgBox n End Sub '---- end VBA ---- Is the ReDim line an array variable declaration similar to Dim, or a statement, or a hybrid? Does this work the same in 2K and XP? Works as is in 2002 (XP). It causes an error if it is changed to: ReDim Preserve y(1 To 5) Apparently this is a feature - I found in the help the following: "Caution: The ReDim statement acts as a declarative statement if the variable it declares doesn't exist at module level or procedure level. If another variable with the same name is created later, even in a wider scope, ReDim will refer to the later variable and won't necessarily cause a compilation error, even if Option Explicit is in effect. To avoid such conflicts, ReDim should not be used as a declarative statement, but simply for redimensioning arrays." Regards, Matthew |
Option Explicit and Arrays
Harlan,
The Help file indicates that this is the expected behavior. Caution The ReDim statement acts as a declarative statement if the variable it declares doesn't exist at module level or procedure level. <<< It is the same in 2000 and 2002. -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Harlan Grove" wrote in message ... Just caught a typo. In Excel 97 VBE, the following general module code doesn't generate a compile error. '---- begin VBA ---- Option Explicit Sub foo() Dim n As Long n = 5 ReDim y(1 To 5) '<- !! MsgBox n End Sub '---- end VBA ---- Is the ReDim line an array variable declaration similar to Dim, or a statement, or a hybrid? Does this work the same in 2K and XP? -- Never attach files. Snip unnecessary quoted text. Never multipost (though crossposting is usually OK). Don't change subject lines because it corrupts Google newsgroup archives. |
Option Explicit and Arrays
There are two types of arrays(i.e. static and dynamic). A
static array is dim myarray(1 to 5). A dynamic array will appear as dim myarray(). And then the code further down, will show the redim statement specifying the parameters, such as redim myarray (1 to foundfiles.count). The error in your code below is that the redim refers to the wrong letter (s/b n, not y) or that redim Y was not initalized with dim y. Robertw -----Original Message----- Just caught a typo. In Excel 97 VBE, the following general module code doesn't generate a compile error. '---- begin VBA ---- Option Explicit Sub foo() Dim n As Long n = 5 ReDim y(1 To 5) '<- !! MsgBox n End Sub '---- end VBA ---- Is the ReDim line an array variable declaration similar to Dim, or a statement, or a hybrid? Does this work the same in 2K and XP? -- Never attach files. Snip unnecessary quoted text. Never multipost (though crossposting is usually OK). Don't change subject lines because it corrupts Google newsgroup archives. . |
All times are GMT +1. The time now is 08:50 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com