Colorline Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 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
Harald Staff Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 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
Colorline Skrevet 2. desember 2009 Forfatter Del Skrevet 2. desember 2009 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
GeirGrusom Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 Alle variabler blir gitt ByRef i VBA etter det jeg husker, så det er fint mulig å returnere flere verdier. Lenke til kommentar
Harald Staff Skrevet 2. desember 2009 Del Skrevet 2. desember 2009 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
GeirGrusom Skrevet 3. desember 2009 Del Skrevet 3. desember 2009 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
Harald Staff Skrevet 3. desember 2009 Del Skrevet 3. desember 2009 Det du har her, strengt tatt, er ikke en funksjon som returnerer noe, men en som returnerer ingenting mens den endrer verdiene på inn-variabler underveis. Ja det gjør jobben, jeg synes det er i familie med spaghettikode, men det er vel et spørsmål om stil og smak og vaner. Beste hilsen Harald Lenke til kommentar
GeirGrusom Skrevet 3. desember 2009 Del Skrevet 3. desember 2009 Spaghettikode, indeed. Men tidligere var dette eneste måte å returnere mer enn én verdi fra en funksjon (types eller klasser var ikke gyldig som returverdi fra funksjoner) Lenke til kommentar
Harald Staff Skrevet 3. desember 2009 Del Skrevet 3. desember 2009 Aha skjønner. Interessant tilbakeblikk, takker Beste hilsen Harald Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå