Working with an array
Excel 2002, WinXP
The MsgBox in this simple macro produces Two, Three in turn. It skips the One. But if I change the "1" in the For statement to a "0", I get One, Two, Three. Why does this happen? Thanks for your help. Otto Public TheArray() As Variant Dim c As Long Sub MacroOne() ReDim TheArray(1 To 3) TheArray = Array("One", "Two", "Three") For c = 1 To UBound(TheArray) MsgBox TheArray(c) Next End Sub |
Working with an array
Put a watch on TheArray and step through your code.
When I did it, assigning the array redimmed TheArray(0 to 2). If I added "option base 1", it redimmed it again, but started at 1 (much like not redimming it at all): Option Base 1 Sub MacroOne() Dim c as long ReDim TheArray(1 To 3) TheArray = Array("One", "Two", "Three") For c = 1 To UBound(TheArray) MsgBox TheArray(c) Next End Sub But I think I'd just use: Sub MacroOneA() Dim c as long Dim TheArray as Variant TheArray = Array("One", "Two", "Three") For c = lbound(TheArray) To UBound(TheArray) MsgBox TheArray(c) Next End Sub And never have to worry about it again. Otto Moehrbach wrote: Excel 2002, WinXP The MsgBox in this simple macro produces Two, Three in turn. It skips the One. But if I change the "1" in the For statement to a "0", I get One, Two, Three. Why does this happen? Thanks for your help. Otto Public TheArray() As Variant Dim c As Long Sub MacroOne() ReDim TheArray(1 To 3) TheArray = Array("One", "Two", "Three") For c = 1 To UBound(TheArray) MsgBox TheArray(c) Next End Sub -- Dave Peterson |
Working with an array
Thanks Dave. You've come through again. Otto
"Dave Peterson" wrote in message ... Put a watch on TheArray and step through your code. When I did it, assigning the array redimmed TheArray(0 to 2). If I added "option base 1", it redimmed it again, but started at 1 (much like not redimming it at all): Option Base 1 Sub MacroOne() Dim c as long ReDim TheArray(1 To 3) TheArray = Array("One", "Two", "Three") For c = 1 To UBound(TheArray) MsgBox TheArray(c) Next End Sub But I think I'd just use: Sub MacroOneA() Dim c as long Dim TheArray as Variant TheArray = Array("One", "Two", "Three") For c = lbound(TheArray) To UBound(TheArray) MsgBox TheArray(c) Next End Sub And never have to worry about it again. Otto Moehrbach wrote: Excel 2002, WinXP The MsgBox in this simple macro produces Two, Three in turn. It skips the One. But if I change the "1" in the For statement to a "0", I get One, Two, Three. Why does this happen? Thanks for your help. Otto Public TheArray() As Variant Dim c As Long Sub MacroOne() ReDim TheArray(1 To 3) TheArray = Array("One", "Two", "Three") For c = 1 To UBound(TheArray) MsgBox TheArray(c) Next End Sub -- Dave Peterson |
All times are GMT +1. The time now is 07:16 PM. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com