Office: (Office 2007) eigene Funktion mit beliebig vielen Argumenten

Helfe beim Thema eigene Funktion mit beliebig vielen Argumenten in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen! Ich möchte gerne eine Funktion schreiben, der ich beliebig viele Zellen/Zellwerte übergeben kann und komme auf keinen grünen Zweig:... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von losgehts, 19. November 2006.

  1. eigene Funktion mit beliebig vielen Argumenten


    Hallo zusammen!

    Ich möchte gerne eine Funktion schreiben, der ich beliebig viele Zellen/Zellwerte übergeben kann und komme auf keinen grünen Zweig:

    Frei fantasiert stell ich mir das quasi folgendermaßen vor: Code:
    (entspräche der schon vorhandenen Funktion =SUMME() )

    oder gibt es eine Möglichkeit mit einem undefiniert großem Datenfeld zu arbeiten?
    Seht oder kennt Ihr Möglichkeiten?

    Im Voraus schon jetzt einmal vielen Dank für Eure Mühe,
    Ulrich

    :)
     
    losgehts, 19. November 2006
    #1
  2. hiho
    was soll den nicht gehen?
    Deine Funktion funktioniert doch.
    ich würde noch folgendes einbauen damit wirklich nur Zahlen genommen werden

    Code:
     
    chris-kaiser, 21. November 2006
    #2
  3. Hi Ulrich,

    mit einem Array
    Code:
     
  4. eigene Funktion mit beliebig vielen Argumenten

    Hallo Ihr Beiden!
    Danke!
    Sorry, da habe ich mich leider nicht eindeutig ausgedrückt:
    ich möchte gerne nicht einen Bereich angeben, sondern voneinander unabähngige Zellen als einzelne Argumente. Diese (so stell ich mir das vor) würde ich dann gerne in einen Bereich zusammenfassen, oder die Werte in ein Datenfeld eingetragen.

    z.B.: "=addieren(C1;A5;B7)"

    @Karin:
    Hallo Karin!
    Ich würde gerne eine Funktion schreiben, der ich Zellen übergeben kann, und nicht alle Zellwerte einer Tabelle auslesen.

    Habt Ihr Ideen?
    Grüße, Ulrich
     
    losgehts, 21. November 2006
    #4
  5. hiho

    ist halt ein wenig schreibarbeit *g*

    Code:
    im Moment fällt mir nix besseres dazu ein
     
    chris-kaiser, 21. November 2006
    #5
  6. hmm, das mit dem optional ist mir auch durch die birne geflattert, find ich aber unbefriedigend, wegen der begrenzten menge an parametern. ok, könntst es auch aufblähen und mit dutzenden von optionalen parametern füttern, aber ich denke, das gehört eher zu den no-gos.

    ich häb das jetz mal wie folgt gemacht:
    das script parset erstmal alle zellen im usedrange.
    findet er werte, überprüft er anschließend, ob diese numerischer natur sind.
    wenn ja, werden die werte in ein array geschoben.
    Code:
    und jetz noch ne funktion, die die einzelnen werten wieder addiert:
    Code:
    zuguterletzt mußt du nun noch ein modul hinzufügen und zwei public-variablen deklarieren(dimmen)
    Code:
    für public arrays muß man ein modul aufmachen, weil die net als Public member da deklariert werden dürfen, sondern nur in nem gesonderten modul.....
    jo, schau mal, ob du das deinen wünschen noch anpassen kannst und ob das weiterhilft....
    liebe grüsse,
    de rayek
     
  7. Hi Chris!

    Danke Dir!
    Ich kannte die Erweiterung "Optional" noch nicht. Habe also schon wieder was dazugelernt!

    Deine Funktion läuft, aber mit der Schreibarbeit gehts mir wie Dir.
    Ob es da nicht eine elegantere Lösung gibt?

    Nochmals Danke!
    Ulrich
     
    losgehts, 21. November 2006
    #7
  8. eigene Funktion mit beliebig vielen Argumenten

    Wow!
    Was für eine Antwortflut!

    Hallo Rayek!
    Vielen Dank für Deine Version!
    Das ist allerdings nicht so ganz das, was ich mir vorgestellt hatte, da ich nicht alle numerischen Werte eines sheets bahandeln will, aber es lässt sich natürlich mit Abfragen anpassen.
    Ich würde, da ich nicht super viele Werte habe, wohl doch zu Chris´ Variante übergehen und die etwas umständliche Art in Kauf nehmen.
    Merkwürdig, dass es so etwas nicht geben soll.

    Nochmals Danke und viele Grüße,
    Ulrich
     
    losgehts, 21. November 2006
    #8
  9. mir ist grad aufgefallen, daß mein ansatz n icht in die richtige richtung geht.
    irgendwie muss man das in dei ActiveSelection reinzwaengen, denn du willst ja aussuchen, welche werte addiert werden, und nicht blind alle werte addieren, oder!?
    das heisst du müsstest über strg+left mouseclick zuvor die zu addierenden zellen markieren, und dann die berechnungsfunktion drüberjagen....
    da mir grade kurzfristig langweilig ist und ich ne pause von meiner 120 slide -powerpoint präsentation brauche, schau ich noch mal kurz, ob da einer geht....
    *wink.gif*
    edit: wow, um ne knappe minute verpasst....*g*
     
  10. Hi Ulrich,

    Dann verwende nicht raZelle.Value sondern raZelle.Address
     
  11. Naja, so schreibt man halt manchmal aneinander vorbei...

    Ich bin schon auf Dein Ergebnis gespannt, allerdings habe ich das mit "strg+left mouseclick" nicht ganz verstanden. Es ist Dir aber bewusst, dass ich eine Funktion schreiben will?
    Da jetzt leider meine terminlichen Vepflichtungen *upps drängen, werde ich erst wieder heute Abend antworten.

    Grüße, Ulrich
     
  12. sodele, ich hab jetz mal folgendes gemacht....
    es gibt keine möglichkeit, eine funktion beliebig zu überladen (schon gar nicht, ohne das klassenkonzept der OOP zu nutzen!!!), solange man es nicht per definitionem festgelegt hat.
    sprich: als klassenkonzept jede einzelne "überladung" in der klasse definieren.
    wo wir wieder beim thema schreibarbeit wären....*rolleyes.gif*
    nee, also, die funktion muß de facto wissen, wieviel parameter sie erhält...
    die einzige möglichkeit ist chris´ lösung mit optional! etwas anderes gibt es - laut meines wissenstandes - nicht!
    im übrigen benutzt auch die formel SUM optionale parameter (30 an der zahl)
    allerdings sieht sie ganze ranges als einen parameter. daher ist durchaus diese formel richtig:
    SUM(C1:C100;D1;E4:F50)
    das einzige, was ich dir nun noch anbieten kann, wäre mein script.
    ich habe es entsprechend angepasst.
    achso, das mit strg+leftclick:
    halte mal die strg-taste gedrückt und wähle dann eine zelle (zB A5) aus. strg gedrückt halten und eine weitere zelle(zB F17) per leftclick auswählen....
    du siehst, die zuerst selektierte zelle bleibt markiert. zelle A5 und F17 sind nun markiert...
    so lassen sich mehrere zellen auswählen, die auf unterschiedlichen addressen
    liegen und der ActiveSelection-bereich kann beliebig erweitert werden.

    ok, jetz zu meinem script.
    eigentlich habe ich nichts gross geändert, außer, daß es sich oben erwähnte selection zunutze macht...
    es werden nur noch die zellen addiert, die du vorher selektiert hast.
    (auf diese weise und mit viel fantasie haben wir die funktion mit den beliebigen parametern "simuliert"!*wink.gif*)
    knall das hier auf das Sheet, in dem die Berechnungen durchgeführt werden soll:
    Code:
    auf das excelsheet selbst mußt du nun noch einen commandbutton setzen, daher die letzte sub commandbutton1_click
    achso, und ein Modul inserten, mit den Public vars
    Code:
    jo, wäre ja cool, wenn´s dir weiterhilft.
    servuz,
    rayek
     
  13. eigene Funktion mit beliebig vielen Argumenten

    hi all

    Code:
    hat ein wenig gedauert da ich damit bis jetzt noch nicht viel zu tun hatte
     
    chris-kaiser, 21. November 2006
    #13
  14. vllt liegt´s mal wieder an meiner dappischkeit, aber ich kriech das nihc zum laufen....
    was soll denn in bereich stehen?
    ich hab einfach mal meine funktion zum befüllen des arrays vorne drangesetzt und dann dein schnippsel angetriggert....
    Code:
    der hüpft einmal da in die forschlaufe und verlässt sofort die funktion...
    ich steh grad völlig aufm schlauch; kann auch sein, daß ich den wald vor lauter bäumen nich seh´....
    liebe grüsse,
    de rayek
     
  15. Wow *boah !
    Du hast es gefunden! Ich bin absolut begeistert. Chris, das ist genau das was ich gesucht habe, einfach Spitze! Da lag ich ja garnicht so weit entfernt, dass man ein Array mit undefinierter Größe als Parameter für eine Funktion benutzen kann. Aber der Befehl "ParamArray" bringt´s halt! Vielen, vielen Dank!

    Ganz besonders interessant finde ich, dass man sowohl die einzelnen Adressen (Arr(i).Address), als auch die Werte (Arr(i).Value) der Zellen auslesen kann!


    @rayek
    Auch Dir möchte ich danken! Ich glaube auch, dass Du gerade auf dem Schlauch stehst, oder vielleicht haben wir uns auch missverstanden:
    die Funktion soll in eine Zelle geschrieben werden (z.B. Inhalt von C3: "=losgehts(A1;A4;A8)" ). Verstehst Du mich?

    Was in der Variablen "bereich" steht in Chris` Function?: er macht einen String aus allen Adressen (obiges Beispiel: bereich="$A$8,$A$4,$A$1"), den er dann in der nächsten Zeile in ein Range "umwandelt" (quasi wie "union(...)" ). Das ist für die von mir im ersten Post genannte Anwendung nicht zingend notwendig; habe es einmal etwas umgeschrieben:
    Code:
    Euch allen (auch Dir, Karin!) nochmals vielen Dank, und ich hoffe, ihr habt nicht zu lange daran gesessen.
     
Thema:

eigene Funktion mit beliebig vielen Argumenten

Die Seite wird geladen...
  1. eigene Funktion mit beliebig vielen Argumenten - Similar Threads - eigene Funktion beliebig

  2. Eigene Form in PowerPoint erstellen

    in Microsoft PowerPoint Hilfe
    Eigene Form in PowerPoint erstellen: Hallo zusammen, wie der Titel schon sagt, möchte ich in PowerPoint eine eigene Form für ein Flow Sheet erstellen. Dafür habe ich z.B. einen Kreis mit zwei innenliegenden Linien gezeichnet, wo...
  3. "Eigene"excel-Funktion innerhalb einer Sub verwenden

    in Microsoft Excel Hilfe
    "Eigene"excel-Funktion innerhalb einer Sub verwenden: Hallo, ich möchte innerhalb einer Sub eine Berechnung mittels einer selbst erstellten Funktion durchführen. Wie kann ich die Funktion aufrufen? Grüße Reinhard Beispiel zum Verständnis Function...
  4. Benutzerdefiniertes Sortieren nach eigener Liste funktioniert nicht

    in Microsoft Excel Hilfe
    Benutzerdefiniertes Sortieren nach eigener Liste funktioniert nicht: Hallo zusammen, ich erstelle eine etymologische Datenbank zu einer Sprachgruppe in Nigeria. Die Spalte "SORTIEREN" soll dabei nach dem unten angegebenen Muster benutzerdefiniert sortiert werden....
  5. emails per vba mit eigenem Ordner speichern

    in Microsoft Outlook Hilfe
    emails per vba mit eigenem Ordner speichern: Hallo Forumgemeinde! Bin neu hier und hoffe das ihr mir bei meinem Vorhaben behilflich sein könnt. Ich möchte mit beiliegend gefundenem VBA-Code (hoffe, dass ich diesen hier überhaupt hochladen...
  6. Wert aus Datenzeile filtern & in eigene Spalte bringen

    in Microsoft Excel Hilfe
    Wert aus Datenzeile filtern & in eigene Spalte bringen: Hallo, ich möchte anhand von Ernteerträge zu gewissen Zeitpunkten (Tagen, nach Datum sortiert) welche in einer Zeile stehen, das Datum der 1. Ernte heraussortieren. Dieses soll dann in einer...
  7. Eigene Funktion bringt plötzlich #NAME?

    in Microsoft Excel Hilfe
    Eigene Funktion bringt plötzlich #NAME?: Hallo zusammen Für das Runden auf 5 Rappen habe ich folgende Funktion geschrieben (habe ich irgendwo aus dem Internet): Code: Function RundenAuf5(CHF As Double) As Double Dim AWF as...
  8. eigene Funktion erstellen und verwenden

    in Microsoft Excel Hilfe
    eigene Funktion erstellen und verwenden: Hallo, ich habe eine ziemlich umfangreiche Funktion die ich an mehreren Stellen in unterschiedlichen VBA-Codes anwenden muss. Da ich aber keine Lust habe diese ständig zu kopieren und einzufügen...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden