如何查找由分割函数创建的数组的长度

时间:2019-05-22 15:43:04

标签: arrays excel vba split

我正在尝试使用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。但是我被告知我有一个无效的限定词。

1 个答案:

答案 0 :(得分: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