Gå til innhold

Funksjonsmakroer - iterasjon el kall av funksjoner?


Anbefalte innlegg

Hei :)

 

Driver m makroprog i excel og skal konstruere en funksjonsmakro som går gjennom en liste av brødsorter og finner ut hvor mange det er av de ulike brødsortene. Er det nødvendig å bruke iterasjoner i funksjonsmakroen, eller finnes d andre måter å gjøre det på, som feks kall av excel funksjoner?

 

Håper noen kan hjelpe :)

Lenke til kommentar
Videoannonse
Annonse

Heia

 

Du kan bruke Excelfunksjoner sånn:

Sub test()
Dim i As Long
i = Application.WorksheetFunction.CountIf(ActiveSheet.Range("A1:A1000"), "Morrabrød")
MsgBox i
End Sub

 

Men en funksjon kan bare returnere en eneste verdi, så jeg kan ikke svare på hvordan du skal kunne rapportere alle versjoner brød uten flere detaljer om oppsettet ditt.

 

HTH. Beste hilsen Harald

Lenke til kommentar
Heia

 

Du kan bruke Excelfunksjoner sånn:

Sub test()
Dim i As Long
i = Application.WorksheetFunction.CountIf(ActiveSheet.Range("A1:A1000"), "Morrabrød")
MsgBox i
End Sub

 

Men en funksjon kan bare returnere en eneste verdi, så jeg kan ikke svare på hvordan du skal kunne rapportere alle versjoner brød uten flere detaljer om oppsettet ditt.

 

HTH. Beste hilsen Harald

 

 

Takk for svar:) Men er det mulig å lage den MED argumenter? Slik at jeg kan skrive =test(argument1) og deretter legge inn argument 1(brødtype) ved å klikke i en celle som har en bestemt brødtype. Fikk det ikke helt til..

Lenke til kommentar

Javisst. Jeg klarer ennå ikke ikke helt tyde hva du er ute etter, men denne funker både som formel og VBA-funksjon:

 

Function TellBroed(HvaSlags As String, TelleOmraade As Range) As Long
TellBroed = Application.WorksheetFunction.CountIf(TelleOmraade, HvaSlags)
End Function

 

i en celle:

=TellBroed(A4;A1:A25)

der A4 inneholder Loff eller noe sånt.

 

Geirgrusom; greia er at en eneste instans av en funksjon ikke uten videre kan returnere antall loff og samtidig antall kneipp, det krever en klasse eller en type eller noe annet smart. Variabler inn er ingen kunst.

 

HTH. Beste hilsen Harald

Lenke til kommentar

Det er kun nødvendig med en klasse dersom antallet som returneres er vilkårlig. Da kan det kanskje være greit å returnere en Dictionary, og ta inn en collection eller array (av hvilke brød som skal telles).

Ellers kan en funksjon returnere flere ting gjennom parameterne:

Sub TelleBroed(ByRef kneipp As Long, ByRef loff As Long, ByRef morrabroed As Long, ByRef TelleOmraade As Range)
 kneipp = Application.WorksheetFunction.CountIf(TelleOmraade, "kneipp")
 loff = Application.WorksheetFunction.CountIf(TelleOmraade, "loff")
 morrabroed = Application.WorksheetFunction.CountIf(TelleOmraade, "morrabrød")
End Sub

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...