Avatar billede bodekaer Nybegynder
11. juli 2002 - 16:54 Der er 5 kommentarer og
2 løsninger

Hvad er forskellen på Sub og Function ?

Er det bare at man i en sub ikke kan returnere noget?

Er det en fordel at bruge den ene eller den anden? Og hvorfor?
Avatar billede dk_akj Nybegynder
11. juli 2002 - 17:14 #1
Som du selv skriver kan en sub ikke returnere noget, det kan en funktion.

Performamcemæssigt er der ingen forskel hvis man overfører samme antal parametre.

Personligt bruger jeg altid funktioner da man har muligheden for at returnere noget derfra.

En sub bruges meget når man laver OCX'er (ActiveX) hvor man ofte laver et event (sub) uden kode, men med bestemte parametre, som så de der skal bruge ocx'en kan bruge. Her kan du sammenligen med MsComm ocx'en der jo har et "oncomm" event.

Håber du kan bruge info. Ellers spørg løs

//akj
Avatar billede kedde65 Praktikant
11. juli 2002 - 17:21 #2
Det er fuldstændigt rigtigt det som dk_akj skriver dog er der den lille krølle at hvis det er i Excel så er der en væsentlig forskel på function og sub.

Sub er makroer og køres som sådanne, function bliver til funktioner man kan kalde i Excel ved at skrive =functNavn()

VH CK
Avatar billede johs_j Novice
11. juli 2002 - 19:39 #3
Man kan putte flere værdier ind i en function men man kan kun returnere én værdi.
Man kan putte flere værdier ind i en sub og returnere lige så mange værdier som man putter ind.
De værdier man putter ind i en function bliver ikke ændret af functionen. De kan derimog godt ændres i en sub.
Avatar billede bodekaer Nybegynder
11. juli 2002 - 19:42 #4
jo, i en funktion skal man så bare skrive:

function test(ByRef str As String)

så ændrer den direkte i den variabel der bliver sendt til den... så meget ved jeg da :)
Avatar billede kedde65 Praktikant
11. juli 2002 - 19:59 #5
Johs_j det er fløjtende ligemeget om du vælger sub eller function, begge kan modtage parametre som ByVal og ByRef og derfor kan de negge det du skriver!!

prøv eksempelvis

sub main()
  dim i as integer
  i = 0
  tmp i
  msgbox i
  tmp1 i
end sub

sub tmp(byref j as integer)
  j = j + 1
end sub

function tmp1(byref j as integer)
  j = j + 1
end function

vh ck
Avatar billede kedde65 Praktikant
11. juli 2002 - 20:00 #6
og selvfølgelig lige en msgbox i tilsidst i sub main for tester :-))
Avatar billede bodekaer Nybegynder
11. juli 2002 - 20:02 #7
Om ikke andet fik jeg da svar på mit spørgsmål. Tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Rambøll Management Consulting

Senior Software Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Analytiker til Security Operationscenter i Cyberdivisionen Hvidovre

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger analytisk stærk og erfaren medarbejder i Hvidovre