Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 205
Default 1D Array Problem (Subscript Out Of Range)

Hi there,

I'm sure this is blindingly obviously but I have a UBound function returning
0 when I can see (in the locals window) that the array has been filled, so I
never get past the first loop of "For x.....". Here's the code:

Private Sub PopulateSheet(ByRef vFilesArray As Variant)

Dim iCol As Integer
Dim iStartRow As Integer
Dim wks As Worksheet

Set wks = Application.Worksheets(1)
iCol = 2
iStartRow = 5 'Starting row

For x = 0 To UBound(vFilesArray, 1)
wks.Cells(iStartRow + x, iCol).Value = vFilesArray(x)
Next x
End Sub

Can anyone tell me what I'm doing wrong please?

FYI - Locals window gives the following values:

- : vFilesArray(0) : : Variant/String(0 to 3)
: vFilesArray(0)(0) : "018.jpg" : String
: vFilesArray(0)(1) : "056.jpg" : String
: vFilesArray(0)(2) : "089.jpg" : String
: vFilesArray(0)(3) : "135.jpg" : String

Best regards

John


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 69
Default 1D Array Problem (Subscript Out Of Range)

So, is it one 1D or 2D array if you use vFilesArray(0)(0) ?

for me it looks like array with only one element: another array which
has three elements inside.

check exactly how you defines array which you pass as argument to
Populate sheet





John wrote:
Hi there,

I'm sure this is blindingly obviously but I have a UBound function returning
0 when I can see (in the locals window) that the array has been filled, so I
never get past the first loop of "For x.....". Here's the code:

Private Sub PopulateSheet(ByRef vFilesArray As Variant)

Dim iCol As Integer
Dim iStartRow As Integer
Dim wks As Worksheet

Set wks = Application.Worksheets(1)
iCol = 2
iStartRow = 5 'Starting row

For x = 0 To UBound(vFilesArray, 1)
wks.Cells(iStartRow + x, iCol).Value = vFilesArray(x)
Next x
End Sub

Can anyone tell me what I'm doing wrong please?

FYI - Locals window gives the following values:

- : vFilesArray(0) : : Variant/String(0 to 3)
: vFilesArray(0)(0) : "018.jpg" : String
: vFilesArray(0)(1) : "056.jpg" : String
: vFilesArray(0)(2) : "089.jpg" : String
: vFilesArray(0)(3) : "135.jpg" : String

Best regards

John


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 205
Default 1D Array Problem (Subscript Out Of Range)

Hi Witek,

Sorry not helpful without all the code. See below:

Thanks for your help

John


Public Sub GeneratePages()

Dim sImagesPath As String
Dim vImagesArray As Variant

'Get Images Array
sImagesPath = Application.Range("Image_Path").Value
vImagesArray = GetFileList(sImagesPath)
PopulateSheet (vImagesArray)

End Sub


Private Function GetFileList(ByRef sPath As String) As Variant

Dim fso As FileSystemObject
Dim fFile As File
Dim fldr As Folder
Dim sFileList As String

'Run through files in folder and return delimited array
Set fso = New FileSystemObject
Set fldr = fso.GetFolder(sPath)
For Each fFile In fldr.Files
Select Case Right(fFile.Name, 4)
Case ".jpg", ".jpe", "jpeg"
sFileList = sFileList & "," & fFile.Name
Case Else

End Select
Next fFile

Set fFile = Nothing
Set fso = Nothing

'Trim any leading commas
If Left(sFileList, 1) = "," Then
sFileList = Mid(sFileList, 2)
End If

GetFileList = Array(Split(sFileList, ","))

End Function


Private Sub PopulateSheet(ByRef vFilesArray As Variant)

Dim iCol As Integer
Dim iStartRow As Integer
Dim wks As Worksheet

Set wks = Application.Worksheets(1)
iCol = 2
iStartRow = 5 'Starting row

For x = 0 To UBound(vFilesArray, 1)
wks.Cells(iStartRow + x, iCol).Value = vFilesArray(x)
Next x
End Sub

"witek" wrote in message
...
So, is it one 1D or 2D array if you use vFilesArray(0)(0) ?

for me it looks like array with only one element: another array which has
three elements inside.

check exactly how you defines array which you pass as argument to Populate
sheet





John wrote:
Hi there,

I'm sure this is blindingly obviously but I have a UBound function
returning 0 when I can see (in the locals window) that the array has been
filled, so I never get past the first loop of "For x.....". Here's the
code:

Private Sub PopulateSheet(ByRef vFilesArray As Variant)

Dim iCol As Integer
Dim iStartRow As Integer
Dim wks As Worksheet

Set wks = Application.Worksheets(1)
iCol = 2
iStartRow = 5 'Starting row

For x = 0 To UBound(vFilesArray, 1)
wks.Cells(iStartRow + x, iCol).Value = vFilesArray(x)
Next x
End Sub

Can anyone tell me what I'm doing wrong please?

FYI - Locals window gives the following values:

- : vFilesArray(0) : : Variant/String(0 to 3)
: vFilesArray(0)(0) : "018.jpg" : String
: vFilesArray(0)(1) : "056.jpg" : String
: vFilesArray(0)(2) : "089.jpg" : String
: vFilesArray(0)(3) : "135.jpg" : String

Best regards

John



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 69
Default 1D Array Problem (Subscript Out Of Range)

Change

GetFileList = Array(Split(sFileList, ","))

to

GetFileList = Split(sFileList, ",")


Split by itself returns array.
You did array of array like



{{"a", "b", "c" }}


so ubound ( {{"a", "b", "c" }}) is really 0.

There is only one element the an array {"a", "b", "c" }




John wrote:
Hi Witek,

Sorry not helpful without all the code. See below:

Thanks for your help

John


Public Sub GeneratePages()

Dim sImagesPath As String
Dim vImagesArray As Variant

'Get Images Array
sImagesPath = Application.Range("Image_Path").Value
vImagesArray = GetFileList(sImagesPath)
PopulateSheet (vImagesArray)

End Sub


Private Function GetFileList(ByRef sPath As String) As Variant

Dim fso As FileSystemObject
Dim fFile As File
Dim fldr As Folder
Dim sFileList As String

'Run through files in folder and return delimited array
Set fso = New FileSystemObject
Set fldr = fso.GetFolder(sPath)
For Each fFile In fldr.Files
Select Case Right(fFile.Name, 4)
Case ".jpg", ".jpe", "jpeg"
sFileList = sFileList & "," & fFile.Name
Case Else

End Select
Next fFile

Set fFile = Nothing
Set fso = Nothing

'Trim any leading commas
If Left(sFileList, 1) = "," Then
sFileList = Mid(sFileList, 2)
End If

GetFileList = Array(Split(sFileList, ","))

End Function


Private Sub PopulateSheet(ByRef vFilesArray As Variant)

Dim iCol As Integer
Dim iStartRow As Integer
Dim wks As Worksheet

Set wks = Application.Worksheets(1)
iCol = 2
iStartRow = 5 'Starting row

For x = 0 To UBound(vFilesArray, 1)
wks.Cells(iStartRow + x, iCol).Value = vFilesArray(x)
Next x
End Sub

"witek" wrote in message
...

So, is it one 1D or 2D array if you use vFilesArray(0)(0) ?

for me it looks like array with only one element: another array which has
three elements inside.

check exactly how you defines array which you pass as argument to Populate
sheet





John wrote:

Hi there,

I'm sure this is blindingly obviously but I have a UBound function
returning 0 when I can see (in the locals window) that the array has been
filled, so I never get past the first loop of "For x.....". Here's the
code:

Private Sub PopulateSheet(ByRef vFilesArray As Variant)

Dim iCol As Integer
Dim iStartRow As Integer
Dim wks As Worksheet

Set wks = Application.Worksheets(1)
iCol = 2
iStartRow = 5 'Starting row

For x = 0 To UBound(vFilesArray, 1)
wks.Cells(iStartRow + x, iCol).Value = vFilesArray(x)
Next x
End Sub

Can anyone tell me what I'm doing wrong please?

FYI - Locals window gives the following values:

- : vFilesArray(0) : : Variant/String(0 to 3)
: vFilesArray(0)(0) : "018.jpg" : String
: vFilesArray(0)(1) : "056.jpg" : String
: vFilesArray(0)(2) : "089.jpg" : String
: vFilesArray(0)(3) : "135.jpg" : String

Best regards

John




  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 205
Default 1D Array Problem (Subscript Out Of Range)

Perfect! Many thanks Witek. I ought to have spotted this from the locals
window as you did.

Thanks for your help.

Best regards

John

"witek" wrote in message
...
Change

GetFileList = Array(Split(sFileList, ","))

to

GetFileList = Split(sFileList, ",")


Split by itself returns array.
You did array of array like



{{"a", "b", "c" }}


so ubound ( {{"a", "b", "c" }}) is really 0.

There is only one element the an array {"a", "b", "c" }




John wrote:
Hi Witek,

Sorry not helpful without all the code. See below:

Thanks for your help

John


Public Sub GeneratePages()

Dim sImagesPath As String
Dim vImagesArray As Variant

'Get Images Array
sImagesPath = Application.Range("Image_Path").Value
vImagesArray = GetFileList(sImagesPath)
PopulateSheet (vImagesArray)

End Sub


Private Function GetFileList(ByRef sPath As String) As Variant

Dim fso As FileSystemObject
Dim fFile As File
Dim fldr As Folder
Dim sFileList As String

'Run through files in folder and return delimited array
Set fso = New FileSystemObject
Set fldr = fso.GetFolder(sPath)
For Each fFile In fldr.Files
Select Case Right(fFile.Name, 4)
Case ".jpg", ".jpe", "jpeg"
sFileList = sFileList & "," & fFile.Name
Case Else

End Select
Next fFile

Set fFile = Nothing
Set fso = Nothing

'Trim any leading commas
If Left(sFileList, 1) = "," Then
sFileList = Mid(sFileList, 2)
End If

GetFileList = Array(Split(sFileList, ","))

End Function


Private Sub PopulateSheet(ByRef vFilesArray As Variant)

Dim iCol As Integer
Dim iStartRow As Integer
Dim wks As Worksheet

Set wks = Application.Worksheets(1)
iCol = 2
iStartRow = 5 'Starting row

For x = 0 To UBound(vFilesArray, 1)
wks.Cells(iStartRow + x, iCol).Value = vFilesArray(x)
Next x
End Sub

"witek" wrote in message
...

So, is it one 1D or 2D array if you use vFilesArray(0)(0) ?

for me it looks like array with only one element: another array which has
three elements inside.

check exactly how you defines array which you pass as argument to
Populate sheet





John wrote:

Hi there,

I'm sure this is blindingly obviously but I have a UBound function
returning 0 when I can see (in the locals window) that the array has
been filled, so I never get past the first loop of "For x.....". Here's
the code:

Private Sub PopulateSheet(ByRef vFilesArray As Variant)

Dim iCol As Integer
Dim iStartRow As Integer
Dim wks As Worksheet

Set wks = Application.Worksheets(1)
iCol = 2
iStartRow = 5 'Starting row

For x = 0 To UBound(vFilesArray, 1)
wks.Cells(iStartRow + x, iCol).Value = vFilesArray(x)
Next x
End Sub

Can anyone tell me what I'm doing wrong please?

FYI - Locals window gives the following values:

- : vFilesArray(0) : : Variant/String(0 to 3)
: vFilesArray(0)(0) : "018.jpg" : String
: vFilesArray(0)(1) : "056.jpg" : String
: vFilesArray(0)(2) : "089.jpg" : String
: vFilesArray(0)(3) : "135.jpg" : String

Best regards

John






Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Subscript out range error when redimensioning dynamic array Crazy Cat Excel Programming 1 January 12th 06 06:25 AM
array: subscript out of range rachel Excel Programming 9 November 9th 04 03:03 AM
Subscript out of range problem JE McGimpsey Excel Programming 0 September 15th 04 05:55 PM
Redim 2D Array Subscript Out Of Range Error lopsided[_10_] Excel Programming 6 February 11th 04 08:24 AM
Subscript Out of Range error in Array... Kevin Lyons Excel Programming 3 February 4th 04 06:17 PM


All times are GMT +1. The time now is 10:34 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"