Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
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. |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
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. . |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Remove explicit formatting only | Excel Discussion (Misc queries) | |||
conditionl format overrides explicit format | Excel Discussion (Misc queries) | |||
Option Explicit | Excel Discussion (Misc queries) | |||
how to create a chart from the source which does not have explicit numbers | Charts and Charting in Excel | |||
option explicit | Excel Discussion (Misc queries) |