Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1684to1688
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Funktion über Arrayelement aufrufen

Funktion über Arrayelement aufrufen
12.04.2019 10:47:57
Burkhard
Hallo miteinander,
ich möchte in ein Array Funktionsaufrufe packen und die Funktionen beim Abarbeiten des Arrays aufrufen, etwa so (STARK vereinfacht):
arNames(0,0) = "Version"
arNames(0,1) = "GetVersion()"
For i = LBound(arNames) To UBound(arNames)
sVersion = ? arNames(i,1)
Next
Ist die Zuweisung im Array (arNames(0,1)) so richtig?
Wie kann man die Funktion, die in arNames(0,1) steckt, aufrufen?
Vielen Dank für Eure Mithilfe!

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion über Arrayelement aufrufen
12.04.2019 11:22:39
Daniel
Hi
Selbstgeschriebene Funktionen kannst du über
sVersion = Application.Run("Funktionsname")

mit einem Textstring aufrufen
verwenden. Wie es mit Originären VBA-Funktionen geht, weiß ich nicht (ggf CallByName)
Sollte niemanden eine Lösung einfallen, wäre also der Workaround dass du die Funktionen, die du so aufrufen willst, zunächst in eine selbstgeschriebene Funktion packst und diese verwendest.
Gruß Daniel
AW: Funktion über Arrayelement aufrufen
12.04.2019 11:26:49
Nepumuk
Hallo Burkhard,
im Prinzip so:
Option Explicit

Public Sub Test()
    Dim arNames(0, 1) As String
    Dim sVersion As String
    Dim i As Long
    
    arNames(0, 0) = "Version"
    arNames(0, 1) = "GetVersion"
    
    For i = LBound(arNames, 2) To UBound(arNames, 2)
        sVersion = Application.Run(arNames(0, i))
        MsgBox sVersion
    Next
End Sub

Public Function Version() As String
    Version = "ABC"
End Function

Public Function GetVersion() As String
    GetVersion = Application.Version
End Function

Außer deine Funktionen befinden sich in einem Klassenmodul.
Gruß
Nepumuk
Anzeige
AW: Funktion über Arrayelement aufrufen
12.04.2019 11:42:43
Burkhard
Hi ihr zwei,
funktioniert - vielen Dank!
Grüße
Burkhard
Mal rein interessehalber
12.04.2019 11:43:11
Zwenn
Hallo Burkhard,
wofür brauchst Du so ein Konstrukt? Das macht den Quellcode doch total unleserlich finde ich. Vielleicht gibt es eine Anwendung, die dieses Vorgehen rechtfertigt. Mir fällt nur keine ein.
Das soll keine Kritik sein. Jeder wie er meint. Ich bin nur neugierig.
Viele Grüße,
Zwenn
AW: Mal rein interessehalber
12.04.2019 14:58:47
Burkhard
Hallo Zwenn,
das ist eine kleine Such- und Reparierfunktion.
In dem Array habe ich eine Soll-Liste aller benannten Zellen in dem Projekt. Das Prüf-Programm nudelt nun diese Liste durch und schaut, ob die jeweilige benannte Zelle (z.B. "Version") vorhanden ist. Wenn nicht, steht in der zweiten Dimension entweder ein direkter Zellbezug (falls der entsprechende Name immer an derselben Stelle erwartet wird) oder eben ein Funktionsaufruf (GetVersion), mit dem die Adresse dynamisch ermittelt wird.
Grüße
Burkhard
Anzeige
AW: Mal rein interessehalber
12.04.2019 15:02:57
Zwenn
Hallo Burkhard,
alles klar. Danke für die Erläuterung :-)
Viele Grüße,
Zwenn
Beliebige Funktion mit Namenstext aufrufen
12.04.2019 12:11:15
Luc:-?
Wie bereits 2× gezeigt, Burkhard,
kann man eine eigene Fkt (UDF) mit Run aufrufen. Ist sie in einem Klassenmodul stationiert, auch mit CallByName, in beiden Fällen inkl ihrer Argumente. Dazu muss ihr Standort-Objekt (als Quell-Objekt) angegeben wdn, weshalb das nicht fktioniert, wenn die UDF in einem normalen Modul stationiert ist.
Mit der letzteren Methode kann man auch beliebige vbMethoden von Objekten aufrufen. Sollen es objektunabhängige vbFktt sein, kann man das - wie bereits in der 1.AW angedeutet - über eine entsprd stationierte AdapterProzedur machen, die auf alle übergebenen Namenstexte und zugehörigen Parameter in Abhängigkeit von deren Anzahl mit den erforderlichen Anweisungen reagiert.
Für Xl-Fktt kann man CallByName ebenfalls verwenden, wenn sie im WorksheetFunction-Container-Objekt vorhanden sind. Anderenfalls können sie nur evaluiert wdn (idR als ganzer FmlText).
Ich arbeite seit längerem an einer Studie, die das zeigt. Sie ist aber noch nicht vollständig, so dass ihre Foren-Publikation noch einige Zeit auf sich warten lassen wird.
Gruß, Luc :-?
„Der beste Beweis für intelligentes Leben im Universum ist, dass noch niemand versucht hat, Kontakt mit uns aufzunehmen.“ H.Lesch, 2018, Sonneberg
Deshalb Intelligenz steigern mit …

Anzeige
AW: Beliebige Funktion mit Namenstext aufrufen
12.04.2019 12:16:03
Nepumuk
Ach Luc,
bitte verschone uns von deinem Geschwätz. Jetzt und in aller Zukunft.
Gruß
Nepumuk
So, so, Geschwätz!
12.04.2019 12:33:54
Luc:-?
Es gibt auch noch Leute, die meine BTe zu schätzen wissen. Das du kein Benehmen hast, hast du ja schon mehrmals bewiesen. Das ist eines Profis eigentlich unwürdig. Jeder demontiert seinen Ruf halt so gut er kann… :->
Und das, was ich geschrieben habe, kann ich auch belegen. Dass dir nicht passt, das ich hier poste, ist allein deine Sache und hat mit Sachlichkeit nichts zu tun. Es soll auch Leute geben, die über Spezialwissen verfügen, das im PgmmiererAlltag kaum erworben wird. Insofern ist eine (nur) auf exzellente Pgmmierkenntnisse gegründete Arroganz äußerst unangebracht.
Luc :-?
Anzeige
AW: So, so, Geschwätz!
12.04.2019 12:43:05
Daniel
Hi Luc
zeig doch bitte mal per Beispielcode, wie man dann Application.Version nach deiner Methode per Textstring direkt ausführen lassen kann.
Gruß Daniel
Du überraschst mich, ...
16.04.2019 03:47:37
Luc:-?
…Daniel,
mit einer derartigen sachlichen Anfrage habe ich gar nicht gerechnet. Allerdings glaube ich eigentlich nicht, dass du das hier meinst:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target = CallByName(Application, "version", VbGet)
End Sub
Das wäre wohl zu einfach. Falls du aber meinen letzten Satz meinen solltest, müsstest du noch etwas warten, falls mir hier ein weiteres Dasein beschieden sein mag… ;-]
Das wirst du dann sicher auch bemerken. Falls nicht (wg evtl zeitweiliger Nichtanwesenheit), spendiere ich dir dann 'nen Link.
Gruß, Luc :-?
Anzeige
AW: Du überraschst mich, ...
17.04.2019 11:01:05
Daniel
naja, sowas hatte ich probiert, aber irgenwie nicht ans laufen bekommen.
Aber in einem SelectionChange-Event macht das ganze jetzt auch nicht wirklich Sinn.
deinen letzten Satz habe ich höflicherweise ignoriert, klingt ein bisschen wie ein Berliner, der stolz davon berichtet, dass sie grad an einem neuen Flughafen bauen.
(wer zu oft, zu viele Angaben zur eigenen Person macht, ohne dass diese Angaben für die aktuelle Fragestellung relevant sind, wird halt schnell für einen Angeber gehalten)
Ich bin ebenfalls wie Nepumuk der Meinung, dass viele deiner Ausführungen in einem Blog besser aufgehoben wären als nur allein im Forum.
Im Herberforum sind deine Ausführungen ja immer nur eine Woche für einen kleinen Leserkreis sichtbar und verschwinden danach in der Rumpelkammer des Archivs, wo sie nur schwer wieder auffindbar sind (wenn man nicht ganz genau weiß, wo man suchen muss). Im Prinzip landen deine Auführungen nach einer Woche im Müll und denkst du nicht auch, dass sie besseres verdient hätten?
in einem eigenen Blog wären deine Überlegungen dann dauerhaft sichtbar, über eine entsprechende Verschlagwortung auch für allgemeine Suchmaschinen leicht auffindbar und somit einem wesentlich größeren Leserkreis zugänglich.
Das ist dann ja auch kein Vertreiben aus dem Forum, da du hier dann ja bei entsprechenden Problemstellungen auf deinen Blog verweisen kannst.
Wenn dieser vernünftig aufgebaut und informativ ist, werden dann wahrscheinlich auch andere Antworter bei Bedarf darauf verweisen (so wie bspw auf Online-Excel.de oder Excelformeln.de).
Gruß Daniel
Anzeige
Das Event war nur ein schnelles Funktionsbsp, ...
17.04.2019 13:33:23
Luc:-?
…Daniel,
das sollte eigentl klar sein.
Was den BER betrifft, die Misere haben importierte Manager und Politiker nebst einigen eigenen zu verantworten. Betroffen sind normale Berliner überwiegend durch die Verzögerung und die Brandenburger im Umfeld dann noch durch die Belastungen des Flugverkehrs nach Fertigstellung.
Eine eigene WebSite oder auch ein Blog macht noch mehr Arbeit (zZ habe ich andere Sorgen) und man findet die Artikel der/sselben auch nur mit den richtigen SuchBegriffen, weshalb ich ebenfalls darauf verweisen müsste, was garantiert auch wieder Kritik provozieren könnte (ArchivVerweise tun das ja bei einigen auch → Eigenwerbung!).
Der Begriff Forum entstammt dem Lateinischen und meint ursprünglich einen Platz, auf dem Märkte und Versammlungen abgehalten wurden, Bürger sich also begegneten und auch Gedanken bzw Meinungen austauschen bzw diskutieren konnten. Es ging also primär nicht um Schulungen oder die Beantwortung von Fragen, obwohl das natürlich auch vorkommen konnte. Andere Foren folgen dieser Grundidee noch heute, während manche ein Fach-Forum wie dieses zu einer reinen Frage-AW-Maschinerie degradieren wollen. Das hatte ggf seine Berechtigung solange ein zusätzliches Diskussionsforum existierte, was lange her ist.
Luc :-?
Anzeige
AW: So, so, Geschwätz!
12.04.2019 12:54:36
Nepumuk
Hallo Luc,
das sind aber zu 99% Leute die deine Ergüsse noch nicht kennen. Deine Beiträge dienen so gut wie nie der Lösung eines Problems sondern nur zu deiner Selbstverherrlichung. Das braucht kein Mensch.
Mach einen eigenen Blog auf da kannst du dir täglich einen abgehen lassen und wir sind zukünftig verschont von dir.
Meinen Ruf hier und in anderen Foren habe ich mir durch die Lösung von Problemen erworben, den kann ich mir durch berechtigte Kritik an deinen Beiträgen nicht kaputt machen. Nur bei dir und darauf lege ich keinen Wert.
Gruß
Nepumuk
Warum dann eine absolut unsachliche Replik ...
16.04.2019 03:33:22
Luc:-?
…auf eine sachliche AW‽ Das macht dich mir trollverdächtig, denn so etwas ist hier schon vorgekommen. Wenn dir meine AW nicht passt, kannst du sie ja löschen, denn du bist doch der Einzige außer HWH, der das darf. Damit würdest du beweisen, dass du der auch als Max K. bekannte, echte Nepumuk bist.
Ansonsten, welches Recht hast du, mir ggüber einen solch vulgären Ton anzuschlagen, mich nach fast 15 Jahren hier vertreiben zu wollen‽ Bin gespannt, was HWH dazu sagt und ob du das auch in anderen Fällen warst…
Im Übrigen kann ich dich beruhigen; ich habe hier in diesen Jahren mehr AWen gegeben als du, was wohl auch daran liegen mag, dass du weniger Zeit dafür hattest. Und neue Fragesteller rechne ich nicht unbedingt zu denen, die meine Extra-Beiträge vorrangig schätzen, obwohl ich auch schon mal eingeladen wurde. Ich schreibe hier derartiges, weil doch immer wieder mal betont wird, dass alle vonein­ander lernen wollen*. Anderenfalls wäre das Forum doch nur so eine Art von hausaufgaben.de.
* Das gilt dann wohl eher nicht für einen „Xl-/VBA-Gott“…
Und wenn du das damals mit der anscheinend tensor-beitrag-bezogenen Replik tatsächlich auch warst, was ich gar nicht glauben mag, bin ich doch nachträglich noch über eine derart ablehnend-unsachliche Bemerkung wie dort erstaunt, denn ein „Progger“ sollte das besser gewusst haben.
Summa summarum, dir geht's hier anscheinend um Diffamierung von jemand, den du weder kennst noch richtig einzuschätzen weißt. Oder bist du nun auch Psychologe…?
Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige