2014-12-04 64 views
0

傳入值時出現問題。首先我試圖在Userform和模塊之間傳遞它們。我認爲它一定是一個問題,所以我把子程序放在同一個用戶窗體中。仍然我的價值被傳遞,但它不回傳給第一個子例程。我迷路了發生了什麼......在用戶窗體中傳遞值

Private Sub rob_wnioski_but_Click() 

Dim wnioski_path As String 

wybor_pliku klient_path:="", opcja:=1 

MsgBox (klient_path) 

End Sub 


Private Sub wybor_pliku(ByRef klient_path As String, opcja As Integer) 

Start.Hide 

With Application.FileDialog(msoFileDialogFilePicker) 
    .AllowMultiSelect = False 'tylko jeden plik 

    If .Show = True Then: klient_path = .SelectedItems(1) 

End With 

Unload Start 

End Sub 
+1

您是如何調試的?爲了確定在'wybor_pliku'例程中'klient_path'變量的值是否被正確賦值,你是否在'If .Show = True'行放置了一個斷點? – 2014-12-04 15:06:37

+0

'klient_path'在'wybor_pliku'例程中被賦值,但是在它結束後它應該被傳回'rob_wnioski_but_Click',但它不是。我在這裏看到類似這樣的東西:http://www.cpearson.com/excel/byrefbyval.aspx但我不能在我的例子中重現它。這個髮尾時間當然在用戶窗體中。 – lowak 2014-12-04 16:46:58

+0

我明白'klient_path'被分配了。現在,請回答我的問題:你做了什麼*確定*一個值實際分配給*該變量? – 2014-12-04 16:50:37

回答

2

您需要將一個變量傳遞給wybor_pliku。你正在做的是傳遞一個文字(空字符串)。您需要在_Click過程中聲明klient_path作爲變量,然後像這樣調用wybor_pliku:

wybor_pliku klient_path, opcja:=1 
+0

它的工作原理!換句話說,如果我通過任何定義的值,就像我在問題中那樣,它不會更新?我對麼?在你的例子中'opcja'不會改變,即使我在子程序'wybor_pliku'中設置了不同的值? – lowak 2014-12-05 09:24:34

+0

是的,這是正確的。 – 2014-12-05 14:48:15

+0

今天學到了東西,謝謝! :) – lowak 2014-12-05 15:43:19