2014-12-04 65 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