如何找到由拆分函数创建的数组的长度[重复]
Posted
技术标签:
【中文标题】如何找到由拆分函数创建的数组的长度[重复]【英文标题】:How to find the length of an array created by a split function [duplicate] 【发布时间】:2019-05-22 15:43:04 【问题描述】:我正在尝试使用 excel 宏读取 csv 文件,该 csv 文件每行的值数量不同。我正在尝试创建一个嵌套循环,一次遍历每一行中的每个值以更新 GUI。
我可以打开 csv 并通过硬编码我想要读取的行来读取行,但希望能够灵活地利用各种用户生成的 csv 文件。
Private Sub LoadSettings_btn_Click()
Dim strfilename As String
Dim fDialog As FileDialog, result As Integer
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
fDialog.AllowMultiSelect = False
fDialog.Title = "Select a file"
fDialog.InitialFileName = "H:\Personal\SideProjects"</code>
If fDialog.Show = -1 Then
strfilename = fDialog.SelectedItems(1)
End If
Dim LineItems As String
Open strfilename For Input As #1
row_number = 0
Do Until EOF(1)
Line Input #1, LineFromFile
LineItems = Split(LineFromFile, ",")
ActiveCell.Value = LineItems.Length()
Loop
Close #1
End Sub
我希望得到数组的长度,对于我的测试文件,第一行是 1,第二行是 3。但是我被告知我的限定符无效。
【问题讨论】:
LBound(Array)
将返回数组的第一个索引和UBound(Array)
最后一个索引。请注意,从 Split 构建的数组从索引 0 开始,所以也许您应该将 1 添加到 Ubound
。
我认为如果您 Dim LineItems as String
然后尝试 LineItems = Split...
,您会收到类型不匹配错误。
@Damian 谢谢,过去几个小时我一直在努力解决这个问题。您的解决方案完美运行。
【参考方案1】:
然而一个数组被创建,数组中的项数是:
UBound(arr) - LBound(arr) + 1
例如:
Sub qwerty()
arr = Split("abc,def,ghi", ",")
MsgBox UBound(arr) - LBound(arr) + 1
End Sub
注意:
即使您手动创建如下数组也是如此:
Dim poiuy( 13 to 27) As String
【讨论】:
以上是关于如何找到由拆分函数创建的数组的长度[重复]的主要内容,如果未能解决你的问题,请参考以下文章