2016-08-19 2 views
0

Also hier ist, wie ich die Funktion aufrufen:Funktion Eingang ist False

FilePathLoD(FirewallAssy) 

und die Funktion ist:

Function FilePathLoD(FileName as String) 
Application.ScreenUpdating = False 
Activewindow.WindowState = xlMinimized 
FilePathLoD = "E:\List of Drawings" 
Workbooks.Open (FilePathLoD & "\" & FileName & "LoD.xlsm") 
Activewindow.WindowState = xlMaximized 
ThisWorkbook.Activate 
Application.ScreenUpdating = True 
End Function 

Wenn ich rufe die Funktion die Saiten analysiert werden zusammen als solche.
E: \ Liste der Zeichnungen \ FalseLoD.xlsm

Warum passiert das und wie kann ich das beheben?

+0

Es klingt, als ob Sie ein Eingabefeld verwenden, um einen Dateinamen vom Benutzer abzurufen, und Sie die Ausführung beenden möchten, wenn der Benutzer Abbrechen statt einen Dateinamen und klicken Sie auf OK drückt. – Jeeped

+0

Die FirewallAssy ist die erste Instanz dieser Zeichenfolge in der Codezeile. Keine Eingabe ist erforderlich. Ich denke, meine Frage ist, warum sich FirewallAssy in False verwandelt? –

+0

Legen Sie eine 'Debug.Print FirewallAssy' direkt vor dem Aufruf und sehen Sie, was der Wert sagt, der übergeben wird. Und setzen Sie 'Debug.Print FileName' als erste Anweisung in die Funktion, damit wir sehen können, was empfangen wird. – YowE3K

Antwort

0

Dateiname ist der erste Parameter der Workbooks.Open method. Ändern Sie es in fname, um Verwirrung zu vermeiden.

Ändern Sie dies in ein Sub Verfahren. Sie geben keinen Wert zurück; einfach eine Methode implementieren. Ein Sub ist für diesen Vorgang geeigneter als eine Funktion.

Sub FilePathLoD(fName as String) 
    Dim fPath as String 
    Application.ScreenUpdating = False 
    Activewindow.WindowState = xlMinimized 
    fPath = "E:\List of Drawings" 
    Workbooks.Open (fPath & "\" & fName & "LoD.xlsm") 
    Activewindow.WindowState = xlMaximized 
    ThisWorkbook.Activate 
    Application.ScreenUpdating = True 
End Function 

Nennen Sie es als eine Prozedur.

FilePathLoD FirewallAssy 
'... or, 
Call FilePathLoD(FirewallAssy) 
+0

Perfekt. Ich danke dir sehr! –

+0

Ich bin verwirrt (wie immer). Ich habe den ursprünglichen Code erfolgreich ausgeführt (nachdem ich den Rückgabewert geändert hatte, den das OP eingestellt hatte, so dass es sich auf ein Verzeichnis bezogen hatte, das ich auf meinem Computer hatte) - d. H. Es öffnete die Datei und gab den Pfad zurück. Obwohl ich Ihren Vorschlägen zu 100% (vielleicht sogar 110%!) Zustimme, sehe ich nicht, wie sie erklären, warum der ursprüngliche Code den Wert von FileName auf False setzt, wenn der OP den Code ausführt. – YowE3K

Verwandte Themen