0

Sub() で使用すると、関数の戻り値をキャッチできません。これが私の機能です。私のSub()と同じモジュールに書かれています。

Option Explicit
Public Function GetMyPath(ByVal strPath As String) As String
' Get the directory strPath from the user
' strPath is the default path given by the function argument

Dim fldr As FileDialog
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)

On Error GoTo 0

With fldr
     .Title = "Selectionner un dossier"
     .AllowMultiSelect = False
     .InitialFileName = strPath
      If .Show <> -1 Then GoTo NextCode
      strPath = .SelectedItems(1)   
End With

NextCode:
Set fldr = Nothing

End Function

ご覧のとおり、ユーザーが選択したパスを文字列として返すようになっています。この関数は、最終的な MsgBox() が選択されたパスを正しく表示するため、正常に機能します。今、私のサブ () の最初の部分

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 :-(

私は何を間違っていますか?Set MyPath = GetMyPath("C:\")オブジェクトではないため、書き込みは機能しません。ご協力ありがとう御座います。

4

1 に答える 1