如何找到由拆分函数创建的数组的长度[重复]

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

【讨论】:

以上是关于如何找到由拆分函数创建的数组的长度[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何定义一个二维数组,数组长度由输入值确定?

如何找到数组的长度?

函数指针数组的长度[重复]

如何将一个数组拆分成多个固定长度的数组

如何获取对象长度[重复]

如何找出数组中出现次数超过长度一半的元素