VBA错误匹配错误13

我是VBA的新手,我写了一个Sub来parsing包含在单个单元格中的CSV信息,并将某些数据片段返回给电子表格中的其他单元格。 它是一个相对简单的代码,但我找不到错误。 它是一个Err 13 Mismatch行Moods = Application.Index(fullArray, 0, 3)任何帮助将不胜感激。

 Private Sub parseCSV() 'Parse "Notes" column and return Moods/Keywords to their apropriate cells Dim CSV As String Dim fullArray As Variant Dim lRow As Long Dim Keywords As Variant Dim Moods As Variant Dim i As Long lRow = ActiveSheet().Range("BL" & ActiveSheet().Rows.Count).End(xlUp).Row For i = 3 To lRow CSV = ActiveSheet.Range("BL" & i) fullArray = Split(CSV, Chr(10)) Moods = Application.Index(fullArray, 0, 3) Keywords = Application.Index(fullArray, 0, 2) ActiveSheet.Range("CD" & i).Value = Moods ActiveSheet.Range("CE" & i).Value = Keywords Next i End Sub 

我testing了下面的parsing函数:

 Private Sub parseCSVTest() 'Parse "Notes" column and return Moods/Keywords to their apropriate cells Dim CSV As String CSV = ActiveSheet.Range("BL5") Dim fullArray As Variant fullArray = Split(CSV, Chr(10)) Dim Moods As Variant Moods = Application.Index(fullArray, 0, 3) Dim Keywords As Variant Keywords = Application.Index(fullArray, 0, 2) ActiveSheet.Range("CD5").Value = Moods ActiveSheet.Range("CE5").Value = Keywords End Sub 

工作得很好。 所以我testing了我的循环。

 Private Sub loopTest() Dim i As Long Dim lRow As Long lRow = ActiveSheet().Range("BL" & ActiveSheet().Rows.Count).End(xlUp).Row For i = 3 To lRow ActiveSheet.Range("CD" & i).Value = "testing" Next i End Sub 

工作正常。 我不知道该从哪里出发。

在为其分配值之前,您正在使用CSV

我知道了。 感谢所有人的帮助,这是一个大脑破坏者。 因为某些原因

 Moods = Application.Index(fullArray, 0, 3) Keywords = Application.Index(fullArray, 0, 2) 

在指定整个列时((0,0)= VBA数组中的列中的所有行)不会返回值。 我只是将数组引用更改为(1,3)和(1,2)。 完整的工作代码如下。 这是我在网上find的parsing单元格数据和切片数组的最简单的方法。 感谢所有帮助过这个的人。

 Private Sub parseCSV() 'Parse "Notes" column and return Moods/Keywords to their apropriate cells Dim CSV As String Dim fullArray As Variant Dim lRow As Long Dim Keywords As Variant Dim Moods As Variant Dim i As Long lRow = ActiveSheet().Range("BL" & ActiveSheet().Rows.Count).End(xlUp).Row For i = 3 To lRow CSV = ActiveSheet.Range("BL" & i) fullArray = Split(CSV, Chr(10)) Moods = Application.Index(fullArray, 1, 2) Keywords = Application.Index(fullArray, 1, 3) ActiveSheet.Range("CE" & i).Value = Moods ActiveSheet.Range("CD" & i).Value = Keywords Next i End Sub