【发布时间】:2016-06-19 22:36:43
【问题描述】:
我使用 Excel DNA 为 Excel 开发了一个插件。我声明了一个接受范围作为输入的 UDF,将 ExcelReference 转换为 Range 并使用来自 GetEnumerator 的枚举器收集 List 中的所有单元格值以进行进一步处理,然后将输出写入另一个范围。
作为测试,我尝试将一整列传递给函数 (A:A),但由于枚举器在最后一个具有值的单元格之后继续枚举空单元格,所以一切都冻结了。
是否有更快的方法来检测全列范围并获取其所有非空单元格?
目前我正在使用此代码,但在上述情况下速度非常慢。
Dim ue = inputRange.GetEnumerator
Dim L As New List(Of String)
Do
If ue.MoveNext Then
Dim c As Range = ue.Current
Dim V As String = c.FormulaLocal
If String.IsNullOrWhiteSpace(V) Then Continue Do
L.Add(V)
Else
Exit Do
End If
Loop
我将使用以下解决方法,但我想从根本上防止这种情况发生。
Dim ue = inputRange.GetEnumerator
Dim counter as integer=0
Dim L As New List(Of String)
Do
If counter>10 Then Exit Do
If ue.MoveNext Then
Dim c As Range = ue.Current
Dim V As String = c.FormulaLocal
If String.IsNullOrWhiteSpace(V.Trim) Then
counter = counter + 1
Continue Do
End If
L.Add(V)
Else
Exit Do
End If
Loop
【问题讨论】:
标签: .net vb.net excel optimization excel-dna