Excel can';无法从函数中获取返回的数据

Excel can';无法从函数中获取返回的数据,excel,vba,Excel,Vba,在Sub()中使用时,我无法捕获函数的返回。 这是我的功能。它与我的Sub()写在同一个模块中 选项显式 公共函数GetMyPath(ByVal strPath作为字符串)作为字符串 '从用户处获取目录strPath 'strPath是函数参数给定的默认路径 Dim fldr As FILE对话框 设置fldr=Application.FileDialog(msoFileDialogFolderPicker) 错误转到0 与fldr .Title=“Selectionner联合国档案” .All

在Sub()中使用时,我无法捕获函数的返回。 这是我的功能。它与我的Sub()写在同一个模块中

选项显式
公共函数GetMyPath(ByVal strPath作为字符串)作为字符串
'从用户处获取目录strPath
'strPath是函数参数给定的默认路径
Dim fldr As FILE对话框
设置fldr=Application.FileDialog(msoFileDialogFolderPicker)
错误转到0
与fldr
.Title=“Selectionner联合国档案”
.AllowMultiSelect=False
.InitialFileName=strPath
如果.Show-1,则转到下一个代码
strPath=.SelectedItems(1)
以
下一个代码:
设置fldr=无
端函数
如您所见,用户倾向于以字符串形式返回所选路径。此函数工作正常,因为最终的MsgBox()将正确显示所选路径。 现在是我的Sub()的第一部分

Sub SaveToPDF()
'将RngToExport作为文件格式导出到MyPath
像线一样变暗
将ws设置为工作表
变暗RNG选择为范围
作为整数的Dim响应
Dim文件格式为Excel.XlFileFormat
Dim RngToExport,作为变体的工作人员名称
将MyPath设置为字符串
Set ws=工作簿(“Gestion\u salaires.xlsm”).Application.Sheets(“导出”)
设置RngToExport=ws.Range(单元格(1,1),单元格(43,7))
Set NameOfWorker=单元格(14,19)
MyPath=“Y:\BATORA\u BATURIX\Employes\Walter H.BAQUE B\bulletin\u salaire\”
''我们希望在保存前警告错误
如果单元格(12,21).值为0或单元格(12,22)0或单元格(12,23)>0,则转到警告_
响应=MsgBox(提示:=“voule z VultUpsier-L'EppRealPad Deffut?”,按钮:=VBeSeNO)
如果响应=vbNo,则
MyPath=GetMyPath(“C:\”)
如果结束
MsgBox(MyPath)“”仅用于调试。MyPath为空:-(
我做错了什么?编写
Set MyPath=GetMyPath(“C:\”)
不起作用,因为它不是对象。
谢谢您的帮助。

您需要插入一行,如:

GetMyPath = strPath
在结束函数之前


否则,字符串不会从函数中传回。

非常好。对于您的答案,请使用[Solutioned]标记编辑我的问题标题是否是问题解决后的最佳做法?有关有人回答您的问题时的操作,请参阅
Sub SaveToPDF()
'Export RngToExport as FileFormat to MyPath 

Dim ToDate As String
Dim ws As Worksheet
Dim RngSelect As Range
Dim Response As Integer
Dim Fileformat As Excel.XlFileFormat
Dim RngToExport, NameOfWorker As Variant
Dim MyPath As String



Set ws = Workbooks("Gestion_salaires.xlsm").Application.Sheets("Export")
Set RngToExport = ws.Range(Cells(1, 1), Cells(43, 7))
Set NameOfWorker = Cells(14, 19)

MyPath = "Y:\BATORA_BATURIX\Employes\Walter H. BAQUE B\bulletin_salaire\"

''We want to warn about errors before saving
If Cells(12, 21).Value <> 0 Or Cells(12, 22) <> 0 Or Cells(12, 23) > 0 Then GoTo Warning_


Response = MsgBox(Prompt:="Voulez-vous utiliser l'emplacement par défaut ?", Buttons:=vbYesNo)
    If Response = vbNo Then
    MyPath = GetMyPath("C:\")
    End If

MsgBox(MyPath) '' just for debuging. MyPath is empty :-(
GetMyPath = strPath