Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
So I decided to post it here. I have read as many message boards as I
could find about the error I continue to receive. "Compile Error: Only comments may appear after End Sub, End Function, or End Property" I have seen posts referring to either APIs or Function Declarations. I do not have either of these in my code. I also saw a post that recommended keping the size of the module below 64k. My code was less than 50k, but to be on the safe side I split it up to two modules and adjusted the code accordingly. I still get the error. Excel is highlighting the first line of the last Sub in the module. I will post all of module1 and two of the subs from module2. I can post the last function if it is deemed necessary, I just didn't want this post to be longer than it had to be. Cheers! 'Module1 Code: Public Type activityType exist As Boolean End Type Public Type levelType exist As Boolean End Type Public Type strandType exist As Boolean activity(1 To 10) As activityType End Type Public Type stationType exist As Boolean level(1 To 4) As levelType End Type Public Type dayType exist As Boolean strand(1 To 4) As strandType End Type Public Type readingLessonType exist As Boolean station(1 To 10) As stationType days(1 To 5) As dayType End Type Public Type lessonType exist As Boolean End Type Public Type chapterType exist As Boolean lesson(50) As lessonType End Type Public Type unitType exist As Boolean chapter(50) As chapterType End Type Public Type readingUnitType exist As Boolean readingLesson(10) As readingLessonType End Type Public Function OpenFile() As Variant Dim filex As Variant filex = Application.GetOpenFilename(Title:="Select Files", MultiSelect:=True) OpenFile = filex End Function Public Function StripFileName(ByRef filename As Variant, ByVal cell As Integer) As String Dim myArray As Variant myArray = Split(filename(cell), "\") 'Remove the tree structure from the filename filename(cell) = myArray(UBound(myArray)) 'Store JUST the file name myArray = Split(myArray(UBound(myArray)), "_") 'Remove _'s myArray = Split(myArray(UBound(myArray)), ".") 'Remove the .'s leaving just the file name and xls StripFileName = myArray(0) 'Return just the file name End Function Public Function OrderFileList(ByRef fileList As Variant) As Variant Dim strTempList(13) As String Dim orgFileList As Variant Dim strTemp As String Dim i As Integer Dim isReading As Boolean orgFileList = fileList isReading = IsItReading() For i = 1 To UBound(fileList) strTemp = StripFileName(fileList, i) strTempList(i - 1) = strTemp Next i = FindFileName(strTempList, "eplanner") orgFileList(1) = fileList(i) i = FindFileName(strTempList, "book") orgFileList(2) = fileList(i) i = FindFileName(strTempList, "unit") orgFileList(3) = fileList(i) If isReading Then i = FindFileName(strTempList, "lesson") orgFileList(4) = fileList(i) i = FindFileName(strTempList, "day") orgFileList(5) = fileList(i) i = FindFileName(strTempList, "strand") orgFileList(6) = fileList(i) i = FindFileName(strTempList, "activity") orgFileList(7) = fileList(i) i = FindFileName(strTempList, "station") orgFileList(8) = fileList(i) i = FindFileName(strTempList, "level") orgFileList(9) = fileList(i) i = FindFileName(strTempList, "resbook") orgFileList(10) = fileList(i) i = FindFileName(strTempList, "resunit") orgFileList(11) = fileList(i) i = FindFileName(strTempList, "reslesson") orgFileList(12) = fileList(i) i = FindFileName(strTempList, "resactivity") orgFileList(13) = fileList(i) i = FindFileName(strTempList, "resstationactivity") orgFileList(14) = fileList(i) Else i = FindFileName(strTempList, "chapter") orgFileList(4) = fileList(i) i = FindFileName(strTempList, "lesson") orgFileList(5) = fileList(i) i = FindFileName(strTempList, "resbook") orgFileList(6) = fileList(i) i = FindFileName(strTempList, "resunit") orgFileList(7) = fileList(i) i = FindFileName(strTempList, "reschapter") orgFileList(8) = fileList(i) i = FindFileName(strTempList, "reslesson") orgFileList(9) = fileList(i) End If OrderFileList = orgFileList End Function Public Function CheckForErrors(ByVal strFileType As String, ByVal strFileName As String) Dim intFlag As Integer Dim isReading As Boolean Module2.SwapToFile (strFileName) LastRow = Cells.Find(What:="*", _ SearchDirection:=xlPrevious, _ SearchOrder:=xlByRows).Row isReading = IsItReading() 'The junk variable is required because a sub can't be used if passing multiple parameters 'and a function is required to be = to something junk = CheckData(LastRow, strFileName, "ISBN") 'Always check the ISBN column Select Case strFileType 'Determine which file we are checking. 'Each case has the "checkable" columns underneath it Case "lesson" If isReading Then junk = CheckData(LastRow, strFileName, "THEME_NUMBER") Else junk = CheckData(LastRow, strFileName, "UNIT_NUMBER") junk = CheckData(LastRow, strFileName, "CHAPTER_NUMBER") junk = CheckData(LastRow, strFileName, "STARS_GUID") End If junk = CheckHierarchy(strFileType, strFileName, isReading, LastRow) junk = CheckData(LastRow, strFileName, "LESSON_NUMBER") junk = CheckData(LastRow, strFileName, "PACING") Case "reslesson" If isReading Then junk = CheckData(LastRow, strFileName, "THEME_NUMBER") Else junk = CheckData(LastRow, strFileName, "UNIT_NUMBER") junk = CheckData(LastRow, strFileName, "CHAPTER_NUMBER") End If junk = CheckHierarchy(strFileType, strFileName, isReading, LastRow) junk = CheckData(LastRow, strFileName, "LESSON_NUMBER") junk = CheckData(LastRow, strFileName, "RES_TYPE_ID") junk = CheckData(LastRow, strFileName, "RES_CAT_ID") Case "resunit" If isReading Then junk = CheckData(LastRow, strFileName, "THEME_NUMBER") Else junk = CheckData(LastRow, strFileName, "UNIT_NUMBER") End If junk = CheckHierarchy(strFileType, strFileName, isReading, LastRow) junk = CheckData(LastRow, strFileName, "RES_TYPE_ID") junk = CheckData(LastRow, strFileName, "RES_CAT_ID") Case "unit" If isReading Then junk = CheckData(LastRow, strFileName, "THEME_NUMBER") Else junk = CheckData(LastRow, strFileName, "UNIT_NUMBER") End If junk = CheckHierarchy(strFileType, strFileName, isReading, LastRow) junk = CheckData(LastRow, strFileName, "PACING") Case "book" junk = CheckData(LastRow, strFileName, "GRADE_ID") junk = CheckData(LastRow, strFileName, "LOCATION_ID") Case "chapter" junk = CheckHierarchy(strFileType, strFileName, isReading, LastRow) junk = CheckData(LastRow, strFileName, "UNIT_NUMBER") junk = CheckData(LastRow, strFileName, "CHAPTER_NUMBER") junk = CheckData(LastRow, strFileName, "PACING") Case "eplanner" junk = CheckData(LastRow, strFileName, "SUBJECT") junk = CheckData(LastRow, strFileName, "GRADE_ID") junk = CheckData(LastRow, strFileName, "LOCATION_ID") Case "resbook" junk = CheckData(LastRow, strFileName, "RES_TYPE_ID") junk = CheckData(LastRow, strFileName, "RES_CAT_ID") Case "reschapter" junk = CheckHierarchy(strFileType, strFileName, isReading, LastRow) junk = CheckData(LastRow, strFileName, "UNIT_NUMBER") junk = CheckData(LastRow, strFileName, "CHAPTER_NUMBER") junk = CheckData(LastRow, strFileName, "RES_TYPE_ID") junk = CheckData(LastRow, strFileName, "RES_CAT_ID") Case "strand" junk = CheckData(LastRow, strFileName, "THEME_NUMBER") junk = CheckData(LastRow, strFileName, "LESSON_NUMBER") junk = CheckData(LastRow, strFileName, "DAY_NUMBER") junk = CheckData(LastRow, strFileName, "STRAND_NUMBER") Case "station" junk = CheckData(LastRow, strFileName, "THEME_NUMBER") junk = CheckData(LastRow, strFileName, "LESSON_NUMBER") junk = CheckData(LastRow, strFileName, "STATION_NUMBER") Case "level" junk = CheckData(LastRow, strFileName, "THEME_NUMBER") junk = CheckData(LastRow, strFileName, "LESSON_NUMBER") junk = CheckData(LastRow, strFileName, "STATION_NUMBER") junk = CheckData(LastRow, strFileName, "LEVEL_NUMBER") Case "day" junk = CheckData(LastRow, strFileName, "THEME_NUMBER") junk = CheckData(LastRow, strFileName, "LESSON_NUMBER") junk = CheckData(LastRow, strFileName, "DAY_NUMBER") Case "activity" junk = CheckData(LastRow, strFileName, "THEME_NUMBER") junk = CheckData(LastRow, strFileName, "LESSON_NUMBER") junk = CheckData(LastRow, strFileName, "DAY_NUMBER") junk = CheckData(LastRow, strFileName, "STRAND_NUMBER") junk = CheckData(LastRow, strFileName, "ACTIVITY_NUMBER") junk = CheckData(LastRow, strFileName, "STARS_GUID") Case "resactivity" junk = CheckData(LastRow, strFileName, "THEME_NUMBER") junk = CheckData(LastRow, strFileName, "LESSON_NUMBER") junk = CheckData(LastRow, strFileName, "DAY_NUMBER") junk = CheckData(LastRow, strFileName, "STRAND_NUMBER") junk = CheckData(LastRow, strFileName, "ACTIVITY_NUMBER") junk = CheckData(LastRow, strFileName, "RES_TYPE_ID") junk = CheckData(LastRow, strFileName, "RES_CAT_ID") Case "resstationactivity" junk = CheckData(LastRow, strFileName, "THEME_NUMBER") junk = CheckData(LastRow, strFileName, "LESSON_NUMBER") junk = CheckData(LastRow, strFileName, "STATION_NUMBER") junk = CheckData(LastRow, strFileName, "LEVEL_NUMBER") junk = CheckData(LastRow, strFileName, "RES_TYPE_ID") junk = CheckData(LastRow, strFileName, "RES_CAT_ID") Case Else MsgBox ("Unrecognized file type. The error checker has not been " + vbCrLf + _ "adapted to this file type: " + vbCrLf + vbCrLf + vbTab + vbTab + filetype) End Select Module2.SwapToFile (strFileName) ActiveWorkbook.Close False End Function Private Function FindFileName(ByVal fileList As Variant, ByVal strFileType As String) As Integer Dim i As Integer For i = 0 To UBound(fileList) If fileList(i) = strFileType Then FindFileName = i + 1 Exit For End If Next End Function Private Function CheckData(ByVal intBottomOfInfo As Integer, ByVal strFile As String, ByVal strCol As String) 'Checks the imported column (strCol)to make sure that it conforms to the correct format of the respective column 'including no inappropriate spaces Dim test, test2, test3, flag As Boolean Dim strTemp, strTest, strTest2, strTest3 As String Select Case strCol Case "ISBN" 'ISBN column strTest = "##########" strTest2 = "#############" strTest3 = "#########[0-Z]" Case "SYLLABUS_ITEM_ID", "CONTENT_ID", "BOOK_ID" 'Syllabus_Item_ID, Content_ID, Book_ID strTest = "[0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z]" + _ "[0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z]" strTest2 = strTest strTest3 = strTest Case "STARS_GUID" 'Stars_GUID strTest = "[0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z]-[0-Z][0-Z][0-Z][0-Z]-[0-Z][0-Z][0-Z][0-Z]-" + _ "[0-Z][0-Z][0-Z][0-Z]-[0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z][0-Z]" strTest2 = strTest strTest3 = strTest Case "PACING" 'Pacing strTest = "#" strTest2 = "#.#" strTest3 = "##.#" Case "RES_TYPE_ID", "RES_CAT_ID" 'RESOURCE IDs junk = CheckRES_ID(intBottomOfInfo, strCol, strFile) Exit Function Case Else 'Any plain numeric column strTest = "#" strTest2 = "##" strTest3 = "###" End Select Module2.SwapToFile (strFile) intColNum = FindWhichColumn(strCol) For intRowNum = 2 To intBottomOfInfo flag = True strTemp = Cells(intRowNum, intColNum).Value2 test = strTemp Like strTest test2 = strTemp Like strTest2 test3 = strTemp Like strTest3 If Cells(intRowNum, intColNum) = "" Then strTemp = strFile & ": There is no number in column: " & strCol & " row: " & intRowNum Module2.SwapToErrorChecker junk = InsertNextMessage(strTemp, 0) Module2.SwapToFile (strFile) flag = False ElseIf (Not test) And (Not test2) And (Not test3) Then strTemp = strFile & ": Improper number format in column: " & strCol & " row: " & intRowNum Module2.SwapToErrorChecker junk = InsertNextMessage(strTemp, 0) Module2.SwapToFile (strFile) flag = False End If If strCol = "ISBN" And flag Then If Cells(intRowNum, intColNum).Value2 < Cells(2, 1).Value2 Then strTemp = strFile & ": There is a differing " & strCol & " in row: " & intRowNum Module2.SwapToErrorChecker junk = InsertNextMessage(strTemp, 0) Module2.SwapToFile (strFile) End If End If Next Module2.SwapToErrorChecker End Function Private Function CheckRES_ID(ByVal intBottomOfInfo As Integer, ByVal strCol As String, ByVal strFile As String) Dim ResList(50), strTemp As String 'Chose the array to be 50 elements because that would cover both RES lists Dim intRow, intCol, i, intURICol As Integer 'with some room for growth. intRow = 1 Module2.SwapToErrorChecker Sheets(strCol).Activate Cells(intRow, 1).Select While Cells(intRow, 1).Value2 < "" ResList(intRow) = Cells(intRow, 1).Value2 intRow = intRow + 1 Wend ResList(intRow + 1) = "End of List" 'Insert manual EOF Module2.SwapToFile (strFile) intRow = 2 intCol = FindWhichColumn(strCol) intURICol = FindWhichColumn("URI") For intRow = 2 To intBottomOfInfo i = 1 Do While ResList(i) < "End of List" If Cells(intRow, intCol).Value2 = ResList(i) Then If ResList(i) = "D661E0B7264D1B55E034080020A7D594" Or ResList(i) = "D661E0B7264E1B55E034080020A7D594" Then If Cells(intRow, intURICol).Value2 = "" Then strTemp = strFile & ": Resource listed without corresponding URI on row: " & intRow Module2.SwapToErrorChecker junk = InsertNextMessage(strTemp, 1) Module2.SwapToFile (strFile) End If End If Exit Do Else i = i + 1 End If If ResList(i) = "End of List" Then strTemp = strFile & ": Invalid " & strCol & " in row: " & intRow Module2.SwapToErrorChecker junk = InsertNextMessage(strTemp, 0) Module2.SwapToFile (strFile) End If Loop intRow = intRow + 1 Next Module2.SwapToErrorChecker End Function Private Function FindWhichColumn(ByVal strColName As String) As Integer Dim intColNum As Integer intColNum = 1 While Cells(1, intColNum).Value2 < "" If Cells(1, intColNum).Value2 = strColName Then FindWhichColumn = intColNum Exit Function End If intColNum = intColNum + 1 Wend FindWhichColumn = 255 End Function Private Function InsertNextMessage(ByVal strError As String, ByVal choice As Integer) 'Used to insert an error message in the proper location, "Possible Errors" or "Warnings" based on "choice" 'choice = 0 <--- Possible Error 'choice = 1 <--- Warning Dim strSearch As String Select Case choice Case 0 strSearch = "Possible Errors" Case 1 strSearch = "Warnings" End Select CurrCell = Cells.Find(What:=strSearch, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Select If Cells(Selection.Row + 1, 1).Value2 < "No errors found." Then 'test to see if entering first error/warning If Cells(Selection.Row + 2, 1).Value2 < "" Then 'test to see if entering second error/warning Selection.End(xlDown).Offset(1, 0).Select Rows(Selection.Row).Select Selection.Insert Shift:=xlDown Cells(Selection.Row, 1).Value2 = strError Else Rows(Selection.Row + 2).Select Selection.Insert Shift:=xlDown Cells(Selection.Row, 1).Value2 = strError End If Else Cells(Selection.Row + 1, 1).Value2 = strError Rows(Selection.Row + 2).Select Selection.Insert Shift:=xlDown End If End Function Private Function IsItReading() As Boolean Dim isReading As Boolean intFlag = FindWhichColumn("THEME_NUMBER") 'Test to determine if it is a reading group if 'THEME_NUMBER' doesn't exist If intFlag < 32767 Then 'intFlag is set to 32767 If Cells(2, intFlag).Value2 = "" Then intFlag = 32767 isReading = False Else isReading = True End If Else isReading = False End If IsItReading = isReading End Function 'Module2 Code: Public Sub SwapToErrorChecker() Windows("ErrorChecker.xls").Activate Sheets("Errors").Activate End Sub Public Sub SwapToFile(ByVal strFile As String) Windows(strFile).Activate Sheets(1).Activate End Sub |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Getting #DIV/O. Can't find a solution | Excel Discussion (Misc queries) | |||
Weird Problem..hoping to find a solution | Excel Worksheet Functions | |||
sum if problem, trying to find best solution | Excel Discussion (Misc queries) | |||
please find a solution | Excel Discussion (Misc queries) | |||
Easy solution need for find problem | Excel Programming |