View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
Varun Varun is offline
external usenet poster
 
Posts: 37
Default Type Mismatch error

Thanks Ryan but didn't help.

I tried your suggestion and though I do not get the type mismatch error, the
value of layer_array is empty.

layer_array without () wouldn't make layer_array an array or would it (just
asking)?

What I am after is taking the value of geomasciiparse (which is an array
since logical_layer is an array in the Function geomsasciiparse) and assign
it to another array in the Sub.

Any other pointers? Thanks for help.

"ryguy7272" wrote:

Just hazarding a guess here. Shouldn't the
Dim layer_array() As Variant
be just
Dim layer_array As Variant
Why do you have the () in there?
I don't believe I've seen it done that way before.

HTH,
Ryan---

--
RyGuy


"Varun" wrote:

Guys,

Can someone please tell me why I get type mismatch error. The problem line
is:

layer_array = geomsasciiparse()

This line in the Sub below calls out the function named geomsasciiparse
which returns an array.

Any help is appreciated.


Private Sub CommandButton1_Click()
Dim layer_array() As Variant



path1 = MentDesContPath

layer_array = geomsasciiparse()

MsgBox "Done"

End Sub

Public Function geomsasciiparse() As Variant

Dim logical_layer() As Variant
Dim logicallayernumber, arraynumber As Integer

Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objGeomsAsciiFile As Object

'Buf array stores words from each line
Dim Buf() As String

'opening geoms_ascii file as read only from Mentor Design Container
Set objGeomsAsciiFile = objFSO.OpenTextFile(path1 & "\geoms_ascii", 1)

Do While Not objGeomsAsciiFile.AtEndOfStream
strLine = objGeomsAsciiFile.Readline

'look for first instance of _LAYER_DEFNITION in geoms_ascii
If InStr(strLine, "_LAYER_DEFINITION") < 0 Then

Buf() = qc_Split(strLine)

'extract logical layer number from ARTWORK_01_LAYER_DEFNITION
logicallayernumber = Mid(Buf(1), 9, 2)

'need to redim logical_layer so it can be assigned to geomsasciiparse later
ReDim Preserve logical_layer(logicallayernumber)

'ignore when ARTWORK_LAYER_DEFINITION = 00 in geoms_ascii
If logicallayernumber < "00" Then

For buf_idx = 1 To UBound(Buf)

If InStr(Buf(buf_idx), "SIGNAL") < 0 Or _
InStr(Buf(buf_idx), "POWER") < 0 Then

logical_layer(logicallayernumber) = Buf(buf_idx)
Exit For
End If
Next
End If
End If
Loop

geomasasciiparse = logical_layer

objGeomsAsciiFile.Close

End Function