Erstellen einer benutzerdefinierten Tabellenfunktion in Excel-VBA
Habe ich eine schwache Erinnerung, in der Lage zu verwenden in VBA Funktionen zur Berechnung von Werten in Excel, wie diese (wie die Zelle, Formel):
=MyCustomFunction(A3)
Kann das getan werden?
EDIT:
Dies ist mein VBA-Funktion-Signatur:
Public Function MyCustomFunction(str As String) As String
Die Funktion sitzt in der ThisWorkbook
Modul. Wenn ich versuche, es in das worksheet wie oben gezeigt, habe ich den #NAME?
Fehler.
Lösung (Danke, codeape): Die Funktion ist nicht zugänglich, wenn es definiert ist ThisWorkbook
Modul. Es muss in eine "richtige" Modul wurde manuell Hinzugefügt, um die Arbeitsmappe.
Es ist erwähnenswert, dass neuere Versionen von Excel mit VBA deaktiviert, wenn Sie die Arbeitsmappe speichern mit ein .xlsx-Erweiterung. Müssen Sie es speichern mit ein .xlsm Erweiterung für VBA aktiviert sein.
Sie wahrscheinlich auch müssen, speichern Sie das Arbeitsblatt-Datei, wenn Sie nicht bereits. Dann schließen und öffnen Sie es wieder tun könnten, die Sache. Aber wieder, müssen Sie möglicherweise erneut bewerben Sie Ihre Formel in Fall haben Sie es geändert.
Sie wahrscheinlich auch müssen, speichern Sie das Arbeitsblatt-Datei, wenn Sie nicht bereits. Dann schließen und öffnen Sie es wieder tun könnten, die Sache. Aber wieder, müssen Sie möglicherweise erneut bewerben Sie Ihre Formel in Fall haben Sie es geändert.
InformationsquelleAutor Tomalak | 2009-04-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann es ja auch. Sie definieren einfach eine VBA-Funktion in einem Modul. Sehen http://www.vertex42.com/ExcelArticles/user-defined-functions.html für eine nette Einführung mit Beispielen.
Hier ein einfaches Beispiel:
Hm, scheint meine Wahl-Modul war falsch. Es müssen nicht sitzen in dem Modul "DieseArbeitsmappe", sondern in einem separaten. Danke. 🙂
Ihre Funktion Signatur ist falsch. Verwenden Sie "nicht typisiert" - Argumente und return-Werte. Ich erinnere mich nicht, was VBA eigentlich tut, wenn man die Art, verwendet es die Variante geben, denke ich.
Hm, sowohl die Reichweite als auch String tatsächlich funktionieren einwandfrei.
Ich bin eigentlich nicht sicher, ob die Signatur ist falsch. Habe ich noch nicht getestet. Aber ja, ich denke, es ist am besten zu verwenden, Varianten - da können Sie dann die Funktion mit beiden Zellbezüge (übergeben als Range-Objekte) und Konstanten (übergeben als Float, string, was auch immer).
InformationsquelleAutor codeape
Das Wort Eingabe und ersetzt werden muss, da es ein basic-Schlüsselwort ist. Versuchen num statt. Sie können auch weiter gehen, indem ein Typ, zB-Variante.
InformationsquelleAutor TMD