Ich definierte eine VBA-Funktion, die eine Dateigröße zurückgibt. Jetzt möchte ich es mit einer Schaltfläche aufrufen, die ein anderes Makro aufruft. Meine Erwartung ist, dass nach dem Ausführen des Makros meine Funktion am Ende aufgerufen wird. Mein Problem ist, dass wenn ich eine Formel in eine Zelle einfüge, sie eine aktuelle Dateigröße nur in dem Moment zurückgibt, in dem ich die Formel eintrage. Wenn ich die Datei bearbeite, sie speichere und neu öffne, zeigt das = wbksize() immer noch die Dateigröße vor meinen Änderungen an.Führen Sie VBA-Funktion mit einer Schaltfläche
Der Zweck dieses Makros, das über eine Schaltfläche ausgeführt wird, besteht darin, den Wert der Dateigröße zu aktualisieren. Hier ist mein Versuch, es zu tun.
Funktion:
Function wbksize()
myWbk = Application.ThisWorkbook.FullName
wbksize = FileLen(myWbk)
End Function
refresh:
Worksheets("Sheet2").Range("K1").Calculate
Die oben nicht zu funktionieren scheint:/
Es sieht so aus, als ob Sie nicht die Ausführung Ihres Makros/Funktion auslösen. Standardmäßig wird die Funktion nicht ausgeführt, nur weil Sie die Arbeitsmappe berechnen. Funktionen, die dies berechnen, werden als "flüchtig" bezeichnet, und Sie können sie explizit definieren, indem Sie 'Application.Volatile' am oberen Rand der Funktion hinzufügen. Weitere Informationen finden Sie hier: http://excel.tips.net/T002013_Forcing_a_Macro_to_Run_when_a_Worksheet_is_Recalculated.html –
Alternativ können Sie, wenn Sie Ihre Funktion nur ausführen möchten, wenn Sie auf die Schaltfläche klicken, der Funktion Ihre Funktion zuweisen. Klicken Sie auf die Schaltfläche und wählen Sie "Makro zuweisen" (vorausgesetzt, Ihre Schaltfläche ist eine grundlegende Formularsteuerung und kein ActiveX-Steuerelement), dann sollte Ihr Funktionsname in dem Dialog aufgeführt sein, den Sie auswählen können. –
Funktionen geben einen Wert zurück und können daher nicht mit einer Schaltfläche aufgerufen werden (da der Wert nicht zurückgegeben werden kann). Sie müssten es einkapseln, wie in Michal Wolinskis Antwort. – Vegard