View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Norman Jones Norman Jones is offline
external usenet poster
 
Posts: 5,302
Default Global array declare

Hi Souris,

I have following code on thisworkbook declaration areare
Dim GradeSheet(1 To 7) As String


Move this Declaration from the ThisWorkbook module to a standard code
module.

dim i, istudent as integer


This declaration does not do what you expect it to do. Your declaration is
equivalent to:

Dim i As variant, iStudent As Integer

You need explicitly to dim each variable:

Dim i As Integer, iStudent As Integer

Call COPY_STUDENT_INFO_DETAILS(GradeSheet(i), iStudent)


You have not initialised the iStudent variable.

To test the above, I successfully ran the simple:

Sub Tester01()

Dim i As Long, iStudent As Long

For i = LBound(GradeSheet) To UBound(GradeSheet)
Debug.Print GradeSheet(i)
Next i

End Sub


---
Regards,
Norman



"Souris" wrote in message
...
I need a global array to access from my VBA code.

I have following code on thisworkbook declaration areare
Dim GradeSheet(1 To 7) As String

To initilize it in Workbook_open

Private Sub Workbook_Open()
GradeSheet(1) = "GRADE"
GradeSheet(2) = "EXAM"
GradeSheet(3) = "HOME WORK"
GradeSheet(4) = "READING"
GradeSheet(5) = "SPEAKING"
GradeSheet(6) = "COMPOSITION"
GradeSheet(7) = "PROJECT"
End Sub

in my spreadsheet have following code


dim i, istudent as integer
For i = 2 To 7
Call COPY_STUDENT_INFO_DETAILS(GradeSheet(i), iStudent)
Next i


I got compiled error "sub or function not defined
It seems VBA considers GradeSheet as a function or sub not an array.

Where I did wrong here?
Any information is great appreciated,