2016-08-19 50 views
0

因此,這裏是我如何調用該函數:功能輸入是假

FilePathLoD(FirewallAssy) 

而且功能:

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 

當我打電話字符串被解析在一起,這樣的功能。
E:\圖紙清單\ FalseLoD.xlsm

爲什麼會發生這種情況,我該如何解決這個問題?

+0

聽起來好像您正在使用輸入框從用戶收集文件名,並且您想要在用戶按下取消而不是提供文件名並單擊確定時停止執行。 – Jeeped

+0

FirewallAssy是該行代碼中此字符串的第一個實例。不需要輸入。我想我的問題是爲什麼FirewallAssy變成False? –

+0

立即在調用之前放置一個'Debug.Print FirewallAssy',並查看它傳遞的值是什麼。並且將一個'Debug.Print FileName'作爲函數內的第一個語句,以便我們可以看到正在接收的內容。 – YowE3K

回答

0

文件名Workbooks.Open method的第一個參數。將其更改爲fname以避免混淆。

更改爲一個程序。你沒有回報價值;簡單地實施一種方法。對於此操作,Sub比函數更合適。

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 

將其稱爲程序。

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

完美。非常感謝! –

+0

我很困惑(像往常一樣)。我成功運行了原始代碼(在更改OP設置的返回值之後,以便它指向我在我的計算機上的目錄) - 即它打開文件並返回路徑。雖然我同意你的建議100%(甚至110%!),但我沒有看到他們如何解釋當OP運行代碼時,原始代碼爲什麼將FileName的值設置爲False。 – YowE3K