|
| Arrays og funktioner (VBA) Fra : Thomas L. Christense~ |
Dato : 09-06-01 21:06 |
|
Hi all
Jeg forsøger at hjælpe en kammarat med nogle
programmeringsopgaver i VBA - desværre kender jeg ikke meget til
VB syntaks, så vi har lidt problemer...
En af opgaverne går på at vi *skal* sende sende to arrays til en
funktion, foretage multiplikationer og returnere resultaterne til
et nyt array.
Problemet er, at uanset hvad jeg prøver så får jeg
fejlmeddelelser. Jeg kan godt sende arrays til funktionen, men
jeg kan ikke finde ud af at modtage resultatet der kommer retur.
Hvad er de rigtige syntakser? På forhånd tak...
==================
Dim resultat(5) as single, arr1(5) as single, arr2(5) as single
.....
resultat = add_funktion(arr1, arr2)
debug.print resultat
end sub
function add_funktion(a1() as single, a2() as single) as single
add_funnktion(i) = a1(i) * a2(i)
end function
=================
--
Thomas L. Christensen - Svendborg, Denmark
| |
Mikkel Ro Manzano Ch~ (10-06-2001)
| Kommentar Fra : Mikkel Ro Manzano Ch~ |
Dato : 10-06-01 00:40 |
|
Prøv at fjerne det ene "n" i andensidste linie.... du skriver
"add_funnktion(i) = a(i) * a2(i)" hvor der vel skulle stå "add_funktion(i) =
a(i) * a2(i)"...
Hvad du prøver at gøre har jeg ikke tjek på, så hvis det her ikke hjælper
så...... spørg en anden
--
Mvh. / Regards Mikkel Christensen
| |
Thomas L. Christense~ (10-06-2001)
| Kommentar Fra : Thomas L. Christense~ |
Dato : 10-06-01 07:43 |
|
"Mikkel Ro Manzano Christensen" <usenet@openzipper.dk> wrote:
>Prøv at fjerne det ene "n" i andensidste linie....
Hehe... Nej, desværre. Eksemplet er ikke copy&paste...
Iøvrigt, ville VB ikke brokke sig over at variablen ikke var
defineret, hvis det bare havde været en tastefejl i programmet?
--
Thomas L. Christensen - Svendborg, Denmark
| |
Mikkel Ro Manzano Ch~ (10-06-2001)
| Kommentar Fra : Mikkel Ro Manzano Ch~ |
Dato : 10-06-01 09:01 |
|
> Iøvrigt, ville VB ikke brokke sig over at variablen ikke var
> defineret, hvis det bare havde været en tastefejl i programmet?
Ikke hvis du ikke har en option explicit som noget af det første i dit
project....
--
Mvh. / Regards Mikkel Christensen
| |
Lars Hoffmann (10-06-2001)
| Kommentar Fra : Lars Hoffmann |
Dato : 10-06-01 02:23 |
|
"Thomas L. Christensen" wrote:
> jeg kan ikke finde ud af at modtage resultatet der kommer retur.
> Hvad er de rigtige syntakser? På forhånd tak...
> function add_funktion(a1() as single, a2() as single) as single
function add_funktion(a1() as single, a2() as single) as single()
--
/Lars
HTML software: < http://go.to/HTMLEasyColors>
Brug venligst Re: og ikke Sv: ved svar, da beskeder
der begynder med Sv: bliver slettet fra mange servere
| |
Thomas L. Christense~ (10-06-2001)
| Kommentar Fra : Thomas L. Christense~ |
Dato : 10-06-01 07:43 |
|
Lars Hoffmann <lars@hoffmann.ac> wrote:
>"Thomas L. Christensen" wrote:
>> jeg kan ikke finde ud af at modtage resultatet der kommer retur.
>> Hvad er de rigtige syntakser? På forhånd tak...
>
>> function add_funktion(a1() as single, a2() as single) as single
>
>function add_funktion(a1() as single, a2() as single) as single()
Det ser *meget* rigtigt ud. Jeg takker for svaret.
--
Thomas L. Christensen - Svendborg, Denmark
| |
SandahlOlsen (10-06-2001)
| Kommentar Fra : SandahlOlsen |
Dato : 10-06-01 10:22 |
|
Følgende burde virke:
Sub Test()
Dim Arr(1) As Single
Dim ReturnArr As Variant
Arr(0) = 2
Arr(1) = 2
ReturnArr = Udregn(Arr())
End Sub
Private Function Udregn(ByRef Arrx() As Single) As Single()
Arrx(0) = Arrx(0) * Arrx(0)
Arrx(1) = Arrx(1) * Arrx(1)
Udregn = Arrx
End Function
"Thomas L. Christensen" <tlc@get2net.dk> wrote in message
news:0fv4it0r2us4dqgg5nvlhhd4hrfumk0tbu@news.tele.dk...
> Hi all
>
> Jeg forsøger at hjælpe en kammarat med nogle
> programmeringsopgaver i VBA - desværre kender jeg ikke meget til
> VB syntaks, så vi har lidt problemer...
>
> En af opgaverne går på at vi *skal* sende sende to arrays til en
> funktion, foretage multiplikationer og returnere resultaterne til
> et nyt array.
>
> Problemet er, at uanset hvad jeg prøver så får jeg
> fejlmeddelelser. Jeg kan godt sende arrays til funktionen, men
> jeg kan ikke finde ud af at modtage resultatet der kommer retur.
> Hvad er de rigtige syntakser? På forhånd tak...
>
>
>
> ==================
>
> Dim resultat(5) as single, arr1(5) as single, arr2(5) as single
>
> ....
>
> resultat = add_funktion(arr1, arr2)
>
> debug.print resultat
>
> end sub
>
>
> function add_funktion(a1() as single, a2() as single) as single
>
> add_funnktion(i) = a1(i) * a2(i)
>
> end function
>
> =================
>
>
>
> --
> Thomas L. Christensen - Svendborg, Denmark
| |
Bjarke (18-06-2001)
| Kommentar Fra : Bjarke |
Dato : 18-06-01 14:06 |
|
SandahlOlsen <sandahl@olsen.mail.dk> skrev:
Hej igen
Det er Thomas Christensen igen - mig der oprindeligt stillede spørgsmålet om
"Arrays og funktioner". Det hele så rigtigt ud, og i var 2 der uafhængigt af
hinanden svarede at man skulle bruge parentes efter type-definitionen af
funktionen:
>Private Function Udregn(ByRef Arrx() As Single) As Single()
men det virker altså bare ikke... VB returnerer "Forventer slutning af
sætning"...
SandahlOlsen <sandahl@olsen.mail.dk> skrev:
Hej
Det er thomas Christensen igen - mig der oprindeligt stillede spørgsmålet om
"Arrays og funktioner". Det hele så så rigtigt ud, og i var 2 der uafhængigt
af hinanden svarede at man skulle bruge parentes efter type-definitionen af
funktionen:
>Private Function Udregn(ByRef Arrx() As Single) As Single()
så det svar sendte jeg videre til min ven - men det virker altså bare
ikke... Er det fordi det er VBA? Når vi sætter parenteser efter single i
ovenstående linie brokker VB sig og siger "Forventede: slutning på
sætning"... Nogen bud på hvad der går galt?
På forhånd tak..
/Thomas
PS - I får lige den komplette kode:
Option Explicit
Dim mat1(10, 10) As Single
Dim i, j
Public Sub Indlaes()
Dim resultat(10, 10) As Single
Dim vec1(0 To 99) As String
Dim filnummer As Integer, filnavn As String
filnummer = FreeFile
filnavn = "c:\dokumenter\2001.txt"
Open filnavn For Input As #filnummer
For i = 0 To 99
Line Input #filnummer, vec1(i)
Next i
i = 0
Close #filnummer
For i = 0 To 9
For j = 0 To 9
mat1(j, i) = vec1((99 - i) - j)
Next j
Next i
resultat() = sub1(mat1())
End Sub
Private Function sub1(m1() As Single) As Single();
For i = 1 To 10
For j = 1 To 10
If i + j = 11 Then
sub1(i, j) = m1(i, j) + 5
Else
sub1(i, j) = m1(i, j)
End If
Next j
Next i
End Sub
> ReturnArr = Udregn(Arr())
>End Sub
>Private Function Udregn(ByRef Arrx() As Single) As Single()
> Arrx(0) = Arrx(0) * Arrx(0)
> Arrx(1) = Arrx(1) * Arrx(1)
> Udregn = Arrx
>End Function
>
>
>"Thomas L. Christensen" <tlc@get2net.dk> wrote in message
>news:0fv4it0r2us4dqgg5nvlhhd4hrfumk0tbu@news.tele.dk...
>> Hi all
>>
>> Jeg forsøger at hjælpe en kammarat med nogle
>> programmeringsopgaver i VBA - desværre kender jeg ikke meget til
>> VB syntaks, så vi har lidt problemer...
>>
>> En af opgaverne går på at vi *skal* sende sende to arrays til en
>> funktion, foretage multiplikationer og returnere resultaterne til
>> et nyt array.
>>
>> Problemet er, at uanset hvad jeg prøver så får jeg
>> fejlmeddelelser. Jeg kan godt sende arrays til funktionen, men
>> jeg kan ikke finde ud af at modtage resultatet der kommer retur.
>> Hvad er de rigtige syntakser? På forhånd tak...
>>
>>
>>
>> ==================
>>
>> Dim resultat(5) as single, arr1(5) as single, arr2(5) as single
>>
>> ....
>>
>> resultat = add_funktion(arr1, arr2)
>>
>> debug.print resultat
>>
>> end sub
>>
>>
>> function add_funktion(a1() as single, a2() as single) as single
>>
>> add_funnktion(i) = a1(i) * a2(i)
>>
>> end function
>>
>> =================
>>
>>
>>
>> --
>> Thomas L. Christensen - Svendborg, Denmark
>
>
| |
Aage Andersen (18-06-2001)
| Kommentar Fra : Aage Andersen |
Dato : 18-06-01 18:53 |
|
"Bjarke" <BjoernSPAMFREE@christiansen.mail.dk> skrev i en meddelelse
news:9gku0o$l6g$1@sunsite.dk...
> SandahlOlsen <sandahl@olsen.mail.dk> skrev:
>
>
> Hej igen
>
> Det er Thomas Christensen igen - mig der oprindeligt stillede spørgsmålet
om
> "Arrays og funktioner". Det hele så rigtigt ud, og i var 2 der uafhængigt
af
> hinanden svarede at man skulle bruge parentes efter type-definitionen af
> funktionen:
>
> >Private Function Udregn(ByRef Arrx() As Single) As Single()
>
prøv med
Private Function Udregn(ByRef Arrx() As Single) As Single
> men det virker altså bare ikke... VB returnerer "Forventer slutning af
> sætning"...
>
> SandahlOlsen <sandahl@olsen.mail.dk> skrev:
>
>
> Hej
>
> Det er thomas Christensen igen - mig der oprindeligt stillede spørgsmålet
om
> "Arrays og funktioner". Det hele så så rigtigt ud, og i var 2 der
uafhængigt
> af hinanden svarede at man skulle bruge parentes efter type-definitionen
af
> funktionen:
>
> >Private Function Udregn(ByRef Arrx() As Single) As Single()
>
> så det svar sendte jeg videre til min ven - men det virker altså bare
> ikke... Er det fordi det er VBA? Når vi sætter parenteser efter single i
> ovenstående linie brokker VB sig og siger "Forventede: slutning på
> sætning"... Nogen bud på hvad der går galt?
>
> På forhånd tak..
>
> /Thomas
>
>
> PS - I får lige den komplette kode:
>
> Option Explicit
> Dim mat1(10, 10) As Single
> Dim i, j
>
> Public Sub Indlaes()
> Dim resultat(10, 10) As Single
> Dim vec1(0 To 99) As String
> Dim filnummer As Integer, filnavn As String
> filnummer = FreeFile
> filnavn = "c:\dokumenter\2001.txt"
> Open filnavn For Input As #filnummer
> For i = 0 To 99
> Line Input #filnummer, vec1(i)
> Next i
> i = 0
> Close #filnummer
>
> For i = 0 To 9
> For j = 0 To 9
> mat1(j, i) = vec1((99 - i) - j)
> Next j
> Next i
> resultat() = sub1(mat1())
> End Sub
>
> Private Function sub1(m1() As Single) As Single();
> For i = 1 To 10
> For j = 1 To 10
> If i + j = 11 Then
> sub1(i, j) = m1(i, j) + 5
> Else
> sub1(i, j) = m1(i, j)
> End If
> Next j
> Next i
>
> End Sub
>
>
> > ReturnArr = Udregn(Arr())
> >End Sub
> >Private Function Udregn(ByRef Arrx() As Single) As Single()
> > Arrx(0) = Arrx(0) * Arrx(0)
> > Arrx(1) = Arrx(1) * Arrx(1)
> > Udregn = Arrx
> >End Function
> >
> >
> >"Thomas L. Christensen" <tlc@get2net.dk> wrote in message
> >news:0fv4it0r2us4dqgg5nvlhhd4hrfumk0tbu@news.tele.dk...
> >> Hi all
> >>
> >> Jeg forsøger at hjælpe en kammarat med nogle
> >> programmeringsopgaver i VBA - desværre kender jeg ikke meget til
> >> VB syntaks, så vi har lidt problemer...
> >>
> >> En af opgaverne går på at vi *skal* sende sende to arrays til en
> >> funktion, foretage multiplikationer og returnere resultaterne til
> >> et nyt array.
> >>
> >> Problemet er, at uanset hvad jeg prøver så får jeg
> >> fejlmeddelelser. Jeg kan godt sende arrays til funktionen, men
> >> jeg kan ikke finde ud af at modtage resultatet der kommer retur.
> >> Hvad er de rigtige syntakser? På forhånd tak...
> >>
> >>
> >>
> >> ==================
> >>
> >> Dim resultat(5) as single, arr1(5) as single, arr2(5) as single
> >>
> >> ....
> >>
> >> resultat = add_funktion(arr1, arr2)
> >>
> >> debug.print resultat
> >>
> >> end sub
> >>
> >>
> >> function add_funktion(a1() as single, a2() as single) as single
> >>
> >> add_funnktion(i) = a1(i) * a2(i)
> >>
> >> end function
> >>
> >> =================
> >>
> >>
> >>
> >> --
> >> Thomas L. Christensen - Svendborg, Denmark
> >
> >
>
| |
|
|