arrays - 循环将数组打印到多个单元格,“对象 _Global 的范围失败”错误
问题描述
我正在读取目录中多个文件的名称。每个文件都有一个标题,其中包含五个破折号。我想将这些名称打印到已用破折号分隔的标题并放入单个单元格的工作表中。
例如,输入:
marie-loves-orange-tabby-cats-100
Shelby-hates-white-winged-moths-200
输出(其中线条代表细胞):
Marie | 爱 | 橙色 | 虎斑 | 猫 | 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
文档中:
将数字转换为字符串时,始终为数字的符号保留前导空格。如果 number 为正数,则返回的字符串包含前导空格并隐含加号。
如果您Debug.Print "A" + Str(i) + ":" + "E" + Str(i)
是 ,您将看到前导空格以及这是一个无效的范围引用:A 1:E 1
而不是A1:E1
.
用于&
连接,并Str
完全避免。
"A" & i & ":E" & i
推荐阅读
- php - 如何使用 PHP 代码进行更改/修改 HTML 代码
- c# - 如何在 MVVM xamarin 中的按钮命令之前显示选择器选择?
- opencv - 如何用计算机视觉检测脏透明水箱中的水位?
- python - 我如何在 spacy 中运行在 GPU 上训练的模型
- spinnaker - Spinnaker - Clouddriver redis 异常
- python - 根据列值中第一次出现的项目将数据框列拆分为两个
- python - 在图像处理中,用高斯滤波器对图像应用卷积与对图像进行高斯导数相同吗?
- php - API 资源 Laravel
- python - 在 Python 中使用 OpenCV 相位展开函数
- reactjs - React Redux 更改初始状态