---
title: "2D Matrisarray"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/57088-2d-matrisarray"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Erik Juhlin"
published: "2002-10-25T11:03:46.000Z"
updated: "2002-10-28T14:42:33.000Z"
replies: 18
views: 351
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/57088-2d-matrisarray"
---

# 2D Matrisarray

## #1 — Erik Juhlin, 2002-10-25T11:03Z

Hur sätter man ihop en matrisarray utan att veta hur många rader man vill ha?

Permalänk: https://www.webforum.nu/p/57088

## #2 — erka, 2002-10-25T13:40Z

Nu snackar du koder med mig erik, när jag ska bygga boooo åt oss ;) Menar du att bygga upp en vanlig 2d array dynamiskt, alltså den kan innehålla allt från 0-100 typ ?

Permalänk: https://www.webforum.nu/p/834898

## #3 — Erik Juhlin, 2002-10-28T12:20Z

Jupp...
Jag kommer ha en metod i en klass som kommer heta AddRecipient där man lägger in e-post adresser.

Först tänkte jag använda ett appended recordset, men det krånglade. Så nu tänkte jag lägga till rader i en 2D-array. :)

Permalänk: https://www.webforum.nu/p/836454

## #4 — @nders, 2002-10-28T12:22Z

Du kan använda redim preserve, men du kan bara ändra på den sista dimensionen.

Mvh,

Permalänk: https://www.webforum.nu/p/836457

## #5 — Erik Juhlin, 2002-10-28T12:23Z

Uhu? Hur fungerar det?
Kan man använda ReDim även i VB? :)

Permalänk: https://www.webforum.nu/p/836458

## #6 — Erik Juhlin, 2002-10-28T12:23Z

Give me an example! :)

Permalänk: https://www.webforum.nu/p/836459

## #7 — @nders, 2002-10-28T12:29Z

Nu pratar vi väl inte VB? ;)
Exempel:

```
<%
Dim varArray 
redim varArray (0,0)

for i = 0 to 50
	redim preserve varArray (0, i)
	varArray (0, i) = "här är grej nummer " & i
next

for i = 0 to ubound(varArray, 2)
	Response.Write varArray (0, i) & "<br>"
Next
%>
```

Mvh,

Permalänk: https://www.webforum.nu/p/836464

## #8 — Erik Juhlin, 2002-10-28T12:35Z

Weee!
Har just fattat hur ArgList fungerar. Inte svårt, men kul. Det som funktionen Array har som gör att man kan skicka in oändligt med argument! :)

```
Function foo(ParamArray ArgList() As Variant)
    Dim vArr As Variant
    vArr = ArgList
    Dim i As Long
    For i = 0 To UBound(vArr)
        MsgBox vArr(i)
    Next i
End Function
```

Permalänk: https://www.webforum.nu/p/836466

## #9 — Erik Juhlin, 2002-10-28T12:36Z

Nu ska jag prova ditt tjaffs. :)

Permalänk: https://www.webforum.nu/p/836469

## #10 — @nders, 2002-10-28T12:37Z

Ok, du är alltså i fel forum och härjar?

Permalänk: https://www.webforum.nu/p/836470

## #11 — Erik Juhlin, 2002-10-28T12:41Z

Preserve betyder att arrayen får ha kvar sitt innehåll?

Permalänk: https://www.webforum.nu/p/836473

## #12 — @nders, 2002-10-28T12:42Z

Jepps.

Permalänk: https://www.webforum.nu/p/836474

## #13 — Erik Juhlin, 2002-10-28T13:48Z

Jag försöker göra så här, men får subscript out of range.

```
Private mEmail As Variant

Public Sub AddRecipient(ByVal sEmail As String, ByVal sName As String)
    
    Dim lNewId As Long
    lNewId = UBound(mEmail, 2)
    
    ReDim Preserve mEmail(0, lNewId) ' <-- felraden
    
    mEmail(0, lNewId) = sEmail
    mEmail(1, lNewId) = sName
    
End Sub

Public Sub send()
    
    Dim i As Long
    
    For i = 0 To UBound(mEmail, 2)
        MsgBox mEmail(0, i) & "<br>"
    Next
    
End Sub
```

By the way, tänkte först att det inte var så VB specifikt. Men nu börjar det spåra ur med en massa VB kod. Skulle kunna flyttas. :)

Permalänk: https://www.webforum.nu/p/836514

## #14 — PatrikB, 2002-10-28T14:27Z

i sub Class_initialize() så skulle jag lägga till detta:

ReDim mEmail(0,0)

\<redigerat\>
dvs, skapa om arrayen (utan ngt data) när du skapar en instans av klassen.
Du kommer då att inte få några data i första indexet men det kan man bjuda på. Dvs, du får börja arraylooparna så här:

```
For N = 1 TO UBound(mEmail,2)
```

då första indexet är tomt =)
\</redigerat\>

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/836559

## #15 — Erik Juhlin, 2002-10-28T14:32Z

Det hade jag, men annat störde.
Nu funkar detta, men jag kan inte få in namn. :l

```
Option Explicit

Private mEmail As Variant

Public Sub AddRecipient(ByVal sEmail As String, ByVal sName As String)
    
    Dim lNewId As Long
    lNewId = UBound(mEmail, 2) + 1
    
    ReDim Preserve mEmail(0, lNewId)
    
    mEmail(0, lNewId) = sEmail
    'mEmail(1, lNewId) = sName
    
End Sub

Public Sub send()
    
    Dim i As Long
    
    For i = 0 To UBound(mEmail, 2)
        MsgBox mEmail(0, i)
    Next
    
End Sub

Private Sub Class_Initialize()
    ReDim mEmail(0, 0)
End Sub
```

Permalänk: https://www.webforum.nu/p/836561

## #16 — PatrikB, 2002-10-28T14:35Z

Felet beror nog på att lNewId = -1 och indexet kan inte vara -1

Första gången du kör UBound på mEmail så kommer ubound att returnera -1 vilket betyder att det är en tom array.

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/836562

## #17 — PatrikB, 2002-10-28T14:36Z

inte konstigt ..... du har ju para en position ;)

```
Private Sub Class_Initialize()
    ReDim mEmail([b]1[/b], 0)
End Sub
```

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/836564

## #18 — Erik Juhlin, 2002-10-28T14:40Z

Hoppade över Class_Initialize.

```
Option Explicit

Private mEmail As Variant

Public Sub AddRecipient(ByVal sEmail As String, ByVal sName As String)
    
    Dim lNewId As Long
    If Not IsArray(mEmail) Then
        ReDim mEmail(1, 0)
        lNewId = 0
    Else
        lNewId = UBound(mEmail, 2) + 1
    End If
    
    ReDim Preserve mEmail(1, lNewId)
    
    mEmail(0, lNewId) = sEmail
    mEmail(1, lNewId) = sName
    
End Sub

Public Sub Send()
    
    Dim i As Long
    
    For i = 0 To UBound(mEmail, 2)
        MsgBox mEmail(0, i)
    Next
    
End Sub

Private Sub Class_Initialize()
    'ReDim mEmail(1, 0)
End Sub
```

Permalänk: https://www.webforum.nu/p/836566

## #19 — Erik Juhlin, 2002-10-28T14:42Z

Nu börjar det funka i alla fall. Tack @nders och PatrikB. :)

Permalänk: https://www.webforum.nu/p/836570

---

Tråden på webben: https://www.webforum.nu/amne/asp/57088-2d-matrisarray
