2016-06-29 17 views
0

Ich habe eine Python-Funktion, die paar erforderliche Argumente zusammen einige Standardargumente zusammen, aber wenn ich versuchte, als fzumstein erwähnt, funktioniert es nicht wie erwartet. Was mache ich falsch?Wie kann UDF Standardargumente zusammen mit anderen erforderlichen Argumenten verarbeiten?

def Doublesum(a, b=1): 
    return (a + b)**2 

in Excel:

=Doublesum(1) 

Dies gibt keinen Wert, das heißt, #Value!. Ich habe xlwings Version 0.7.2 installiert.

+0

Haben Sie die Funktion mit '@ xw.func' versehen und in Excel importiert? Funktionieren andere Funktionen (ohne Standardargumente)? Versuchen Sie, die UDF-Samples von der Homepage herunterzuladen und probieren Sie sie zuerst aus. –

+0

@FelixZumstein ja es wurde mit '@xlfunc' dekoriert. Ja Funktionen ohne Standardargumente funktioniert. –

+0

Welche Version von Python verwenden Sie? Aus reiner Neugier habe ich dein Beispiel (mit @ xw.func) ausprobiert und es hat gut funktioniert. Versuchen, die potenziellen Unterschiede einzugrenzen. – Paul

Antwort

0

Ich würde empfehlen, versuchen Sie eine neue Installation in einer Conda-Umgebung (wie es aussieht, dass Sie das haben). Versuchen Sie:

conda create -n xlwings-test python=2.7 
activate xlwings-test 
conda install xlwings pandas numpy 

Versuchen Sie dann tun from xlwings import func. Dann versuchen Sie die UDF example - d. H. Laden Sie die beiden Dateien (.py und .xlsm) und öffnen Sie die .xlsm an der gleichen Eingabeaufforderung, die Sie für Ihre xlwings-test Umgebung verwenden.

Das funktionierte, als ich es gerade (auf Windows) versuchte. Wenn Sie diesen Stack-Trace über den Keyerror erhalten, posten Sie ihn bitte.

+0

Danke für die Antwort, ich habe eine neue Umgebung in der oben erwähnten Weise erstellt. Aber das konnte ich nicht importieren. Falsche Anzahl an Argumenten oder Warnung wegen ungültiger Eigenschaftenzuweisung von Microsoft Visual Basic für Anwendungen. –