Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / May 2008

Tip: Looking for answers? Try searching our database.

Nightmare with Arrays

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Steve - 30 May 2008 14:08 GMT
Hi

I did write yesterday but with no real success.

I am trying to put a number of values in an array by looping through some
cells.

I'm having difficulty as I don't know how long the array will be nor can I
sem to add to it.

I have tried the following so far.

A=array() - create an empty array
A(0) = cells(count,1).value
A(1) = cells(count,2).value
etc etc

I have looked at similar code that puts cell information into an array and I
think it's the creation of a blank array that is the problem.

The trouble is that I do not know how big the array is going to be.

Any guidance would be appreciated.

Thanks

Steve
Sam Wilson - 30 May 2008 14:18 GMT
Hi Steve - it's easy once you know how.

sub ArrayDemo()

dim A as string() 'or whatever datatype you want
dim i as integer

for i = 0 to 10
 redim preserve A(i)
 A(i) = Range("a1").offset(i,0).value
next i

end sub

Redim is the command to change the dimension of the array, preserve means to
keep all the data in there.

Sam

> Hi
>
[quoted text clipped - 23 lines]
>
> Steve
Steve - 30 May 2008 14:31 GMT
Perfect

Thanks Sam

> Hi Steve - it's easy once you know how.
>
[quoted text clipped - 42 lines]
> >
> > Steve
Sam Wilson - 30 May 2008 14:33 GMT
Mark it right in case anyone else searches witha  similar problem...

> Perfect
>
[quoted text clipped - 46 lines]
> > >
> > > Steve
Steve - 30 May 2008 15:26 GMT
I say perfect but I  have created a test button with the following code:

This throws up a Run time error 13 - Type Mismatch error.

Private Sub CommandButton1_Click()

Dim lList As Variant
Dim iCol, i As Integer

Worksheets("Export").Select

For iCol = 12 To 31

   For i = 0 To 20
       ReDim Preserve lList(i)
       lList(i) = Cells(2, iCol).Value
   Next i

Next iCol

End Sub

> Mark it right in case anyone else searches witha  similar problem...
>
[quoted text clipped - 48 lines]
> > > >
> > > > Steve
Norman Jones - 30 May 2008 15:36 GMT
Hi Steve,

Perhaps, try:

   Dim Arr As Variant

   Arr = Range("L1:AE21").Value

---
Regards.
Norman

>I say perfect but I  have created a test button with the following code:
>
[quoted text clipped - 74 lines]
>> > > >
>> > > > Steve
Sam Wilson - 30 May 2008 15:41 GMT
It should be "dim |List() as variant" , you need the brackets in the
declaration for an array

> I say perfect but I  have created a test button with the following code:
>
[quoted text clipped - 70 lines]
> > > > >
> > > > > Steve
Norman Jones - 30 May 2008 14:24 GMT
Hi Steve,

You should stay in the original thread.

Try to explain precisely what data is to
be loaded into the array and what you
wish to do with the array.

Note, however, that a range may be
loaded directly into an array, e.g.:

       Dim arr As Variant

       arr = Range("A1:B10").Value

---
Regards.
Norman

> Hi
>
[quoted text clipped - 24 lines]
>
> Steve
Steve - 30 May 2008 15:39 GMT
Norman

Essentially I want to run across a sheet putting values into an array. Then
move down a line and run across again, this time adding the value to the
value in the array.

e.g.

0 0 0 0 0
1 0 0 1 1
2 0 0 0 2

there are 2 columns to check. I need to do this for each customer in another
list.

I have the following code from Sam which I have put into a test button.
However, this throws up a Run time error 13 - Type Mismatch error.

Private Sub CommandButton1_Click()

Dim lList As Variant
Dim iCol, i As Integer

Worksheets("Export").Select

For iCol = 12 To 31

For i = 0 To 20
ReDim Preserve lList(i)
lList(i) = Cells(2, iCol).Value
Next i

Next iCol

End Sub

> Hi Steve,
>
[quoted text clipped - 43 lines]
> >
> > Steve
Steve - 30 May 2008 15:45 GMT
As you said, easy when you know how

Thank you

> Norman
>
[quoted text clipped - 79 lines]
> > >
> > > Steve
Sam Wilson - 30 May 2008 15:45 GMT
It should be "dim |List() as variant" , you need the brackets in the
declaration for an array

> Norman
>
[quoted text clipped - 79 lines]
> > >
> > > Steve
Steve - 30 May 2008 17:17 GMT
And I thought it was all going so well.

Trying to get a routine to add up a number of columns and a number of rows
with  the following routine:

Dim lList() As Integer
Dim iCol, i, rw As Integer

For iRow = 2 To 3

   i = 0
   For iCol = 12 To 13

       ReDim Preserve lList(i)
       lList(i) = lList(i) + Worksheets("Export").Cells(iRow, iCol).Value
       i = i + 1

   Next iCol

Next iRow

for some reason it seems to put the first row into teh array and even adds
up the first one of the second row.

This is what I have:

6 3 2 4
1 2 5 7

So my array after the routine should have the following in it:

7 5 7 11

No so luck

Where am i going wrong?

Thanks

Steve

> It should be "dim |List() as variant" , you need the brackets in the
> declaration for an array
[quoted text clipped - 82 lines]
> > > >
> > > > Steve
Gary Keramidas - 30 May 2008 17:42 GMT
this works for me

Sub test()
Dim irow As Long
Dim lList() As Integer
Dim icol, i, rw As Long

For irow = 2 To 3
   i = 0
   For icol = 12 To 15
       ReDim Preserve lList(0 To 3)
       lList(i) = lList(i) + Worksheets("sheet1").Cells(irow, icol).Value
       i = i + 1
   Next
Next

End Sub

Signature

Gary

> And I thought it was all going so well.
>
[quoted text clipped - 127 lines]
>> > > >
>> > > > Steve
Steve - 30 May 2008 17:53 GMT
This also works for me.

The only difference I can see is the Dim statements.

You learn something every day.

Thanks for your help.

Best Regards

Steve

> this works for me
>
[quoted text clipped - 145 lines]
> >> > > >
> >> > > > Steve
Steve - 30 May 2008 17:57 GMT
Ah, just seen the ReDim statement. This I think makes the real difference.

My problem here is that i'm not sure how big the array will be.

Some more experimenting me thinks.

This is a big help though.

Cheers

Steve

> this works for me
>
[quoted text clipped - 145 lines]
> >> > > >
> >> > > > Steve
Gary Keramidas - 30 May 2008 19:26 GMT
there's not enough information to really help. here i showed an example of how
to do it with variables, but i don't know how your data is laid out and how
you're determining which columns and rows to use.

there may be better ways to do this:

Option Explicit
Sub test()
     Dim ws As Worksheet
     Dim irow As Long
     Dim lList() As Integer
     Dim startcol As Long
     Dim endcol As Long
     Dim icol, i, rw As Long, x As Long
     ReDim lList(0)
     Set ws = Worksheets("Sheet1")
     startcol = 12
     endcol = ws.Cells(2, Columns.Count).End(xlToLeft).Column
     For irow = 2 To 3
           i = 0
           For icol = startcol To endcol
                 x = 1
                 ReDim Preserve lList(0 To endcol - startcol)
                 lList(i) = lList(i) + Worksheets("sheet1").Cells(irow,
icol).Value
                 i = i + 1
           Next
     Next
End Sub

Signature

Gary

> Ah, just seen the ReDim statement. This I think makes the real difference.
>
[quoted text clipped - 159 lines]
>> >> > > >
>> >> > > > Steve
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.