+ Reply to Thread
Results 1 to 6 of 6

Array of User define data.

Hybrid View

  1. #1
    Cactus [ÏÉÈËÇ&ograv
    Guest

    Array of User define data.

    I want to use a typed data of array.

    Type myType
    X As Long
    Y As Long
    End Type

    Dim myMatrix(20)(20) As myType

    But above code is wrong.
    How to that right VBA coding?

    Another question.
    Can I use a Variant array such as

    dim myVar as Long = 20
    Dim myMatrix(myVar) As myType


    Thanks...

  2. #2
    Bob Phillips
    Guest

    Re: Array of User define data.

    I think this is what you mean

    Dim myarray() As myType

    ReDim myarray(1 To 20)
    myarray(1).X = 1
    myarray(1).Y = 3

    Const cLen As Long = 20
    Dim myArray2(cLen) As myType

    myArray2(20).X = 1
    myarray(20).Y = 2


    --
    HTH

    Bob Phillips

    "Cactus [ÏÉÈËÇò]" <a@b.com> wrote in message
    news:%23jEO4n4$EHA.3908@TK2MSFTNGP12.phx.gbl...
    > I want to use a typed data of array.
    >
    > Type myType
    > X As Long
    > Y As Long
    > End Type
    >
    > Dim myMatrix(20)(20) As myType
    >
    > But above code is wrong.
    > How to that right VBA coding?
    >
    > Another question.
    > Can I use a Variant array such as
    >
    > dim myVar as Long = 20
    > Dim myMatrix(myVar) As myType
    >
    >
    > Thanks...




  3. #3
    Cactus [ÏÉÈËÇ&ograv
    Guest

    Re: Array of User define data.

    Thank Bob

    I read VBA help, to define a 2D array use

    Dim myArray(20,20) as myType

    Now I get next block.

    How send the 2D Array as Argument?

    Sub mySub(theArray() As myType)

    End Sub





    "Bob Phillips" <phillips@tiscali.co.uk> дÈëÓʼþ
    news:Oqv7tE7$EHA.3708@TK2MSFTNGP14.phx.gbl...
    > I think this is what you mean
    >
    > Dim myarray() As myType
    >
    > ReDim myarray(1 To 20)
    > myarray(1).X = 1
    > myarray(1).Y = 3
    >
    > Const cLen As Long = 20
    > Dim myArray2(cLen) As myType
    >
    > myArray2(20).X = 1
    > myarray(20).Y = 2
    >
    >
    > --
    > HTH
    >
    > Bob Phillips
    >
    > "Cactus [ÏÉÈËÇò]" <a@b.com> wrote in message
    > news:%23jEO4n4$EHA.3908@TK2MSFTNGP12.phx.gbl...
    > > I want to use a typed data of array.
    > >
    > > Type myType
    > > X As Long
    > > Y As Long
    > > End Type
    > >
    > > Dim myMatrix(20)(20) As myType
    > >
    > > But above code is wrong.
    > > How to that right VBA coding?
    > >
    > > Another question.
    > > Can I use a Variant array such as
    > >
    > > dim myVar as Long = 20
    > > Dim myMatrix(myVar) As myType
    > >
    > >
    > > Thanks...

    >
    >



  4. #4
    Tom Ogilvy
    Guest

    Re: Array of User define data.

    Type myType
    X As Long
    Y As Long
    End Type


    Sub MySub1()
    Dim myArray(20, 20) As myType
    For i = LBound(myArray, 1) To UBound(myArray, 1)
    For j = LBound(myArray, 2) To UBound(myArray, 2)
    myArray(i, j).X = Int(Rnd() * 10000 + 1)
    myArray(i, j).Y = Int(Rnd() * 10000 + 1)
    Next
    Next
    mySub myArray
    End Sub


    Sub mySub(theArray() As myType)
    i = Int(Rnd() * 20 + 1)
    j = Int(Rnd() * 20 + 1)
    MsgBox "MyArray(" & i & "," & _
    j & ").X=" & theArray(i, j).X & _
    vbNewLine & _
    "MyArray(" & i & "," & _
    j & ").Y=" & theArray(i, j).Y
    End Sub

    as an example.

    --
    Regards,
    Tom Ogilvy

    "Cactus [ÏÉÈËÇò]" <a@b.com> wrote in message
    news:OY%23iFb7$EHA.3472@TK2MSFTNGP14.phx.gbl...
    > Thank Bob
    >
    > I read VBA help, to define a 2D array use
    >
    > Dim myArray(20,20) as myType
    >
    > Now I get next block.
    >
    > How send the 2D Array as Argument?
    >
    > Sub mySub(theArray() As myType)
    >
    > End Sub
    >
    >
    >
    >
    >
    > "Bob Phillips" <phillips@tiscali.co.uk> дÈëÓʼþ
    > news:Oqv7tE7$EHA.3708@TK2MSFTNGP14.phx.gbl...
    > > I think this is what you mean
    > >
    > > Dim myarray() As myType
    > >
    > > ReDim myarray(1 To 20)
    > > myarray(1).X = 1
    > > myarray(1).Y = 3
    > >
    > > Const cLen As Long = 20
    > > Dim myArray2(cLen) As myType
    > >
    > > myArray2(20).X = 1
    > > myarray(20).Y = 2
    > >
    > >
    > > --
    > > HTH
    > >
    > > Bob Phillips
    > >
    > > "Cactus [ÏÉÈËÇò]" <a@b.com> wrote in message
    > > news:%23jEO4n4$EHA.3908@TK2MSFTNGP12.phx.gbl...
    > > > I want to use a typed data of array.
    > > >
    > > > Type myType
    > > > X As Long
    > > > Y As Long
    > > > End Type
    > > >
    > > > Dim myMatrix(20)(20) As myType
    > > >
    > > > But above code is wrong.
    > > > How to that right VBA coding?
    > > >
    > > > Another question.
    > > > Can I use a Variant array such as
    > > >
    > > > dim myVar as Long = 20
    > > > Dim myMatrix(myVar) As myType
    > > >
    > > >
    > > > Thanks...

    > >
    > >

    >




  5. #5
    Cactus [ÏÉÈËÇ&ograv
    Guest

    Re: Array of User define data.

    Hi Tom

    I want the argument is a part of array.
    but VBA said that is wrong language grammar.


    Sub mySub(theArray() As myType)
    For y = 0 to 20
    theArray(y).X = 1
    theArray(y).Y = 2
    Next y
    End Sub


    Sub Main()
    Dim myArray(20, 20) As myType
    For x = 0 to 20
    mySub myArray(x)
    'I think myArray(x) should a array "myArray(20) As myType"
    Next x
    End Sub


    "Tom Ogilvy" <twogilvy@msn.com> дÈëÓʼþ
    news:ezk2wP9$EHA.2076@TK2MSFTNGP15.phx.gbl...
    > Type myType
    > X As Long
    > Y As Long
    > End Type
    >
    >
    > Sub MySub1()
    > Dim myArray(20, 20) As myType
    > For i = LBound(myArray, 1) To UBound(myArray, 1)
    > For j = LBound(myArray, 2) To UBound(myArray, 2)
    > myArray(i, j).X = Int(Rnd() * 10000 + 1)
    > myArray(i, j).Y = Int(Rnd() * 10000 + 1)
    > Next
    > Next
    > mySub myArray
    > End Sub
    >
    >
    > Sub mySub(theArray() As myType)
    > i = Int(Rnd() * 20 + 1)
    > j = Int(Rnd() * 20 + 1)
    > MsgBox "MyArray(" & i & "," & _
    > j & ").X=" & theArray(i, j).X & _
    > vbNewLine & _
    > "MyArray(" & i & "," & _
    > j & ").Y=" & theArray(i, j).Y
    > End Sub
    >
    > as an example.
    >
    > --
    > Regards,
    > Tom Ogilvy
    >
    > "Cactus [ÏÉÈËÇò]" <a@b.com> wrote in message
    > news:OY%23iFb7$EHA.3472@TK2MSFTNGP14.phx.gbl...
    > > Thank Bob
    > >
    > > I read VBA help, to define a 2D array use
    > >
    > > Dim myArray(20,20) as myType
    > >
    > > Now I get next block.
    > >
    > > How send the 2D Array as Argument?
    > >
    > > Sub mySub(theArray() As myType)
    > >
    > > End Sub
    > >
    > >
    > >
    > >
    > >
    > > "Bob Phillips" <phillips@tiscali.co.uk> дÈëÓʼþ
    > > news:Oqv7tE7$EHA.3708@TK2MSFTNGP14.phx.gbl...
    > > > I think this is what you mean
    > > >
    > > > Dim myarray() As myType
    > > >
    > > > ReDim myarray(1 To 20)
    > > > myarray(1).X = 1
    > > > myarray(1).Y = 3
    > > >
    > > > Const cLen As Long = 20
    > > > Dim myArray2(cLen) As myType
    > > >
    > > > myArray2(20).X = 1
    > > > myarray(20).Y = 2
    > > >
    > > >
    > > > --
    > > > HTH
    > > >
    > > > Bob Phillips
    > > >
    > > > "Cactus [ÏÉÈËÇò]" <a@b.com> wrote in message
    > > > news:%23jEO4n4$EHA.3908@TK2MSFTNGP12.phx.gbl...
    > > > > I want to use a typed data of array.
    > > > >
    > > > > Type myType
    > > > > X As Long
    > > > > Y As Long
    > > > > End Type
    > > > >
    > > > > Dim myMatrix(20)(20) As myType
    > > > >
    > > > > But above code is wrong.
    > > > > How to that right VBA coding?
    > > > >
    > > > > Another question.
    > > > > Can I use a Variant array such as
    > > > >
    > > > > dim myVar as Long = 20
    > > > > Dim myMatrix(myVar) As myType
    > > > >
    > > > >
    > > > > Thanks...
    > > >
    > > >

    > >

    >
    >



  6. #6
    Bob Phillips
    Guest

    Re: Array of User define data.

    You cannot pass 1 dimension of the array to the sub AFAIK, but you can pass
    1 element

    Type myType
    x As Long
    y As Long
    End Type

    Sub mySub(theArray As myType)
    With theArray
    .x = .x * 2
    .y = .y * 2
    End With
    End Sub


    Sub Main()
    Dim myArray(20, 20) As myType, x
    For x = 0 To 20
    myArray(x, 1).x = 100 + x
    myArray(x, 1).y = 200 + x
    MsgBox "x=" & myArray(x, 1).x & ", Y=" & myArray(x, 1).y
    mySub myArray(x, 1)
    MsgBox "x=" & myArray(x, 1).x & ", Y=" & myArray(x, 1).y
    Next x
    End Sub



    --
    HTH

    Bob Phillips

    "Cactus [ÏÉÈËÇò]" <a@b.com> wrote in message
    news:OBsyDaCAFHA.3924@TK2MSFTNGP15.phx.gbl...
    > Hi Tom
    >
    > I want the argument is a part of array.
    > but VBA said that is wrong language grammar.
    >
    >
    > Sub mySub(theArray() As myType)
    > For y = 0 to 20
    > theArray(y).X = 1
    > theArray(y).Y = 2
    > Next y
    > End Sub
    >
    >
    > Sub Main()
    > Dim myArray(20, 20) As myType
    > For x = 0 to 20
    > mySub myArray(x)
    > 'I think myArray(x) should a array "myArray(20) As myType"
    > Next x
    > End Sub
    >
    >
    > "Tom Ogilvy" <twogilvy@msn.com> дÈëÓʼþ
    > news:ezk2wP9$EHA.2076@TK2MSFTNGP15.phx.gbl...
    > > Type myType
    > > X As Long
    > > Y As Long
    > > End Type
    > >
    > >
    > > Sub MySub1()
    > > Dim myArray(20, 20) As myType
    > > For i = LBound(myArray, 1) To UBound(myArray, 1)
    > > For j = LBound(myArray, 2) To UBound(myArray, 2)
    > > myArray(i, j).X = Int(Rnd() * 10000 + 1)
    > > myArray(i, j).Y = Int(Rnd() * 10000 + 1)
    > > Next
    > > Next
    > > mySub myArray
    > > End Sub
    > >
    > >
    > > Sub mySub(theArray() As myType)
    > > i = Int(Rnd() * 20 + 1)
    > > j = Int(Rnd() * 20 + 1)
    > > MsgBox "MyArray(" & i & "," & _
    > > j & ").X=" & theArray(i, j).X & _
    > > vbNewLine & _
    > > "MyArray(" & i & "," & _
    > > j & ").Y=" & theArray(i, j).Y
    > > End Sub
    > >
    > > as an example.
    > >
    > > --
    > > Regards,
    > > Tom Ogilvy
    > >
    > > "Cactus [ÏÉÈËÇò]" <a@b.com> wrote in message
    > > news:OY%23iFb7$EHA.3472@TK2MSFTNGP14.phx.gbl...
    > > > Thank Bob
    > > >
    > > > I read VBA help, to define a 2D array use
    > > >
    > > > Dim myArray(20,20) as myType
    > > >
    > > > Now I get next block.
    > > >
    > > > How send the 2D Array as Argument?
    > > >
    > > > Sub mySub(theArray() As myType)
    > > >
    > > > End Sub
    > > >
    > > >
    > > >
    > > >
    > > >
    > > > "Bob Phillips" <phillips@tiscali.co.uk> дÈëÓʼþ
    > > > news:Oqv7tE7$EHA.3708@TK2MSFTNGP14.phx.gbl...
    > > > > I think this is what you mean
    > > > >
    > > > > Dim myarray() As myType
    > > > >
    > > > > ReDim myarray(1 To 20)
    > > > > myarray(1).X = 1
    > > > > myarray(1).Y = 3
    > > > >
    > > > > Const cLen As Long = 20
    > > > > Dim myArray2(cLen) As myType
    > > > >
    > > > > myArray2(20).X = 1
    > > > > myarray(20).Y = 2
    > > > >
    > > > >
    > > > > --
    > > > > HTH
    > > > >
    > > > > Bob Phillips
    > > > >
    > > > > "Cactus [ÏÉÈËÇò]" <a@b.com> wrote in message
    > > > > news:%23jEO4n4$EHA.3908@TK2MSFTNGP12.phx.gbl...
    > > > > > I want to use a typed data of array.
    > > > > >
    > > > > > Type myType
    > > > > > X As Long
    > > > > > Y As Long
    > > > > > End Type
    > > > > >
    > > > > > Dim myMatrix(20)(20) As myType
    > > > > >
    > > > > > But above code is wrong.
    > > > > > How to that right VBA coding?
    > > > > >
    > > > > > Another question.
    > > > > > Can I use a Variant array such as
    > > > > >
    > > > > > dim myVar as Long = 20
    > > > > > Dim myMatrix(myVar) As myType
    > > > > >
    > > > > >
    > > > > > Thanks...
    > > > >
    > > > >
    > > >

    > >
    > >

    >




+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1