【发布时间】:2025-12-18 21:45:01
【问题描述】:
我想检查空数组。谷歌给了我各种各样的解决方案,但没有奏效。也许我没有正确应用它们。
Function GetBoiler(ByVal sFile As String) As String
'Email Signature
Dim fso As Object
Dim ts As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
GetBoiler = ts.ReadAll
ts.Close
End Function
Dim FileNamesList As Variant, i As Integer
' activate the desired startfolder for the filesearch
FileNamesList = CreateFileList("*.*", False) ' Returns File names
' performs the filesearch, includes any subfolders
' present the result
' If there are Signatures then populate SigString
Range("A:A").ClearContents
For i = 1 To UBound(FileNamesList)
Cells(i + 1, 1).Formula = FileNamesList(i)
Next i
SigString = FileNamesList(3)
If Dir(SigString) <> "" Then
Signature = GetBoiler(SigString)
Else
Signature = ""
End If
如果FileNamesList 数组为空,则根本不应该调用GetBoiler(SigString)。当FileNamesList 数组为空时,SigString 也为空,这将使用空字符串调用GetBoiler() 函数。我在
Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
因为sFile 是空的。有什么办法可以避免吗?
【问题讨论】:
-
查看modArraySupport,Chip Pearson 提供的一组有用的程序,用于支持处理数组。
IsArrayEmpty做你想做的事。 -
If TypeName(FileNamesList) = "Empty" Then