Представляю странную ситуацию. Я использую MS Access Office 365 на Windows 10.
Параметр вызывающего изменен. Это означает, что strBase обрабатывается как ByRef.
Public Function AvailableDirPath(strBase As String) As String
' Find non existing folder path.
' strBase : folder path that a folder is created.
' Return: Full system path for the directory
Dim bFound As Boolean: bFound = Falase
Do Until FolderExists(strBase) = False
' The ParentFolderPath returns full path of parent folder.
strBase = ParentFolderPath(strBase) & "\" & (Int(99999 * Rnd) + 10000)
Loop
AvailableDirPath = strBase
End Function
Вызывающая сторона находится чуть ниже.
Dim txtPath As String: txtPath = "C:\windows\temp\MSACCESS_TEST\"
Dim strRes as String
strRes = modFileFolder.AvailableDirPath(txtPath)
То, что происходит после получения возвращаемого значения, также было изменено. Но если я изменил его на
AvailableDirPath(ByVal strBase as String) As String
Тогда txtPath не изменится.
Я думаю, что параметр по умолчанию принимает значение ByVal, но почему он принимает значение ByRef?