/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
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
> >
> >
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste