循环将数组打印到多个单元格,"range of object _Global failed"错误



我正在读取目录中多个文件的名称。每个文件都有一个标题,其中有五个破折号。我想将这些名称打印到一个已经被破折号分开并放入单个单元格中的标题的表格。

例如,输入:
Marie-Loves-orange-tabby-cats-100
Shelby Hates-white-winged-moths-200

输出(线代表单元格(:
玛丽|爱|橙色|塔比|猫|100
谢尔比|讨厌|白色|有翼|飞蛾|200

我没有看到一种优雅的方式将单一维数组打印到单元格(尽管我的方式也不是非常优雅(,而我能找到的示例并未通过变化的值循环。我尝试了一个简单的a:e作为范围,但这在整个单元格上打印了相同的文件名。为了解决这个问题,我制作了一个具有可变值的字符串作为范围,以便它只能在这些单元格中打印,然后向下移动。A1:E1,然后是A2:E2,...等等。

Dim vaArray   As Variant
    Dim i               As Integer
    Dim oFile       As Object
    Dim oFSO     As Object
    Dim oFolder  As Object
    Dim oFiles     As Object
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(sPath)
    Set oFiles = oFolder.Files
    If oFiles.Count = 0 Then
        file_list = False
        Exit Function
    End If
    ReDim vaArray(1 To oFiles.Count)
    Dim afterSplit() As String
    Dim rangeString As String
    Worksheets("filenames").Activate
    i = 1
    For Each oFile In oFiles
        afterSplit = Split(oFile.Name, "-", 5)
        rangeString = "A" + Str(i) + ":" + "E" + Str(i)
        Range(rangeString).Value = afterSplit
        i = i + 1
    Next

然而,这会抛出一个"消息"对象'_global'失败"失败"错误,而无需打印任何内容。感谢您对此的任何帮助。

编辑:添加了较大的代码,以清晰地添加。

来自Str文档:

当数字转换为字符串时,始终为数字符号保留一个领先空间。如果数字为正,则返回的字符串包含一个领先空间,并且隐含了加号。

如果您Debug.Print "A" + Str(i) + ":" + "E" + Str(i),您将看到领先空间,以及这是无效的范围参考:A 1:E 1而不是A1:E1

使用&进行连接,并完全避免Str

"A" & i & ":E" & i

相关内容

最新更新