当所有迭代器都声明为“Variant”时,如何使用“For Each”中的迭代器作为函数的 String 参数?[复制]

How can I use an iterator from a "For Each" as a String parameter to a function when all iterators are declared as "Variant"? [duplicate]

提问人:Kudor 提问时间:9/4/2023 更新时间:9/4/2023 访问量:23

问:

因此,我尝试使用“For Each”块中的迭代器 OutDirectoryPath 作为此函数的参数:

Function GetFilePathArrayFromDirectory(directoryPath As String) As String()
    'some code here
End Function

以下是我通过它的方式:

Dim OutDirectoryPath
For Each OutDirectoryPath In OutFolderPaths
        
        Dim FilePathArray() As String
        
        FilePathArray = GetFilePathArrayFromDirectory(OutDirectoryPath)
    
Next OutDirectoryPath

问题是我收到编译错误,因为“For Each”块中的每个迭代器都自动声明为“Variant”,并且仅在运行时将其指定为 String。我的问题是,如果迭代器始终具有“Variant”类型,而不将函数的参数更改为“Variant”,我该如何使用它们作为参数?

VBA 函数 类型 参数

评论

0赞 Lord-JulianXLII 9/4/2023
Dim OutDirectoryPath As String?
1赞 GSerg 9/4/2023
@Lord-JulianXLII A 不能是 .StringFor Each

答:

1赞 Ike 9/4/2023 #1

您可以使用以下命令将变体转换为字符串:CStr

FilePathArray = GetFilePathArrayFromDirectory(CStr(OutDirectoryPath))