Illegel Error on a Function Call

  • Thread starter Syed Zeeshan Haider
  • Start date
S

Syed Zeeshan Haider

Hello Experts,
I have Excel 97 Pro on Win98SE.

I have certain piece of code which *was* fully functional. Then I lost
Windows folder somehow. I did a fresh installation of Windows 98. Now the
same piece of code is causing following error on a function call:

==================================
EXCEL caused an invalid page fault in
module <unknown> at 0000:01fd0432.
Registers:
EAX=01fd027c CS=0167 EIP=01fd0432 EFLGS=00010202
EBX=01fb4270 SS=016f ESP=0062ca80 EBP=0062cb4c
ECX=00000006 DS=016f ESI=01fdf271 FS=111f
EDX=01fe0fd0 ES=016f EDI=0062ca98 GS=0000
Bytes at CS:EIP:
00 a0 e8 27 fc 01 70 04 fd 01 fc c6 00 00 00 00
Stack dump:
65255d43 0062ca98 004ffb80 0062cab0 0062caac 0062caa8 00000000 00000000
00000000 00000000 00000000 ffffffff 01fe11fc 00010000 00000000 00000000
==================================



Here is the code:

'----------------------------------------------------------
Option Explicit

Public Function Join(source() As String, Optional _
sDelim As String = " ") As String
Dim sOut As String, iC As Integer
On Error GoTo errh:
For iC = LBound(source) To UBound(source) - 1
sOut = sOut & source(iC) & sDelim
Next
sOut = sOut & source(iC)
Join = sOut
Exit Function
errh:
Err.Raise Err.Number
End Function

Public Function Split(ByVal sIn As String, Optional sDelim As _
String, Optional nLimit As Long = -1, Optional bCompare As _
Long = vbBinaryCompare) As Variant
Dim sRead As String, sOut() As String, nC As Integer
If sDelim = "" Then
Split = sIn
End If
sRead = ReadUntil(sIn, sDelim, bCompare)
Do
ReDim Preserve sOut(nC)
sOut(nC) = sRead
nC = nC + 1
If nLimit <> -1 And nC >= nLimit Then Exit Do
sRead = ReadUntil(sIn, sDelim)
Loop While sRead <> ""
ReDim Preserve sOut(nC)
sOut(nC) = sIn
Split = sOut
End Function

Public Function ReadUntil(ByRef sIn As String, _
sDelim As String, Optional bCompare As Long _
= vbBinaryCompare) As String
Dim nPos As String
nPos = InStr(1, sIn, sDelim, bCompare)
If nPos > 0 Then
ReadUntil = Left(sIn, nPos - 1)
sIn = Mid(sIn, nPos + Len(sDelim))
End If
End Function

Public Function StrReverse(ByVal sIn As String) As String
Dim nC As Integer, sOut As String
For nC = Len(sIn) To 1 Step -1
sOut = sOut & Mid(sIn, nC, 1)
Next
StrReverse = sOut
End Function

Public Function InStrRev(ByVal sIn As String, sFind As String, _
Optional nStart As Long = 1, Optional bCompare As _
Long = vbBinaryCompare) As Long
Dim nPos As Long
sIn = StrReverse(sIn)
sFind = StrReverse(sFind)
nPos = InStr(nStart, sIn, sFind, bCompare)
If nPos = 0 Then
InStrRev = 0
Else
InStrRev = Len(sIn) - nPos - Len(sFind) + 2
End If
End Function

Public Function Replace(sIn As String, sFind As String, _
sReplace As String, Optional nStart As Long = 1, _
Optional nCount As Long = -1, Optional bCompare As _
Long = vbBinaryCompare) As String

Dim nC As Long, nPos As Integer, sOut As String
sOut = sIn
nPos = InStr(nStart, sOut, sFind, bCompare)
If nPos = 0 Then GoTo EndFn:
Do
nC = nC + 1
sOut = Left(sOut, nPos - 1) & sReplace & _
Mid(sOut, nPos + Len(sFind))
If nCount <> -1 And nC >= nCount Then Exit Do
nPos = InStr(nStart, sOut, sFind, bCompare)
Loop While nPos > 0
EndFn:
Replace = sOut
End Function

'----------------------------------------------------------

This code was provided by MS on a web page whose address I have forgotten.
Note that this code was fully functional before the fresh installation of
Windows 98. But now the call to Split() function (n this code) is causing
the above-mentioned error.
Any ideas?
What should I do now?

Thank you,
 
S

Syed Zeeshan Haider

Syed,
I would assume that it is being treated as the VBA version of the function
call.
Try typing "VBA." and see "Split" apears as an option.

As a matter of fact, Split() function was not available until VBA6 while
Excel 97 Pro uses VBA5. That's why MS has provided these functions for VBA5
users on their site and I copied those functions for the reference.

Thanks,
 
N

NickHK

Syed,
I would assume that it is being treated as the VBA version of the function
call.
Try typing "VBA." and see "Split" apears as an option.

NickHK
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top