VBA类型不匹配使用单个单元格的地址范围
试图将范围传递到阵列。如果该范围是一个单元格(例如“ A1”),则返回A  type不匹配(错误13)。仅当传递给函数的范围至少为2个单元格时,它才能起作用。
arrayrng() = activesheet.range(rng.address).value 'BUG
同样,当范围是一个单元格时,错误处理程序解决方案的解决方案有一个错误:
arrayRng(0) = Rng.Value 'BUG
Public arrayRng() As Variant
Function GetArraysFromRange(ByVal Rng As Range) As Variant
Dim j As Long
On Error GoTo SingleRange
arrayRng() = ActiveSheet.Range(Rng.Address).Value 'BUG
''Make 1D array into 2D array
Dim TempArray() As Variant
Dim i As Long
ReDim TempArray(1 To UBound(arrayRng), 1 To 2)
For i = 1 To UBound(arrayRng)
TempArray(i, 1) = arrayRng(i, 1)
Next i
arrayRng = TempArray
' copy array position (1) to position (2)for later modifying
For j = LBound(arrayRng) To UBound(arrayRng)
arrayRng(j, 2) = arrayRng(j, 1)
Next
GetArraysFromRange = arrayRng
Erase arrayRng
Exit Function
SingleRange:
Err.Clear
arrayRng(0) = Rng.Value 'BUG
Resume
End Function
Trying to pass a range to an array. If the range is a single cell (e.g "A1") it returns a type mismatch (error 13). It works only if the range passed to the function is at least 2 cells e.g "A1:A2".
arrayrng() = activesheet.range(rng.address).value 'BUG
Also the error handler workaround, when the range is a single cell, has a bug in line:
arrayRng(0) = Rng.Value 'BUG
Public arrayRng() As Variant
Function GetArraysFromRange(ByVal Rng As Range) As Variant
Dim j As Long
On Error GoTo SingleRange
arrayRng() = ActiveSheet.Range(Rng.Address).Value 'BUG
''Make 1D array into 2D array
Dim TempArray() As Variant
Dim i As Long
ReDim TempArray(1 To UBound(arrayRng), 1 To 2)
For i = 1 To UBound(arrayRng)
TempArray(i, 1) = arrayRng(i, 1)
Next i
arrayRng = TempArray
' copy array position (1) to position (2)for later modifying
For j = LBound(arrayRng) To UBound(arrayRng)
arrayRng(j, 2) = arrayRng(j, 1)
Next
GetArraysFromRange = arrayRng
Erase arrayRng
Exit Function
SingleRange:
Err.Clear
arrayRng(0) = Rng.Value 'BUG
Resume
End Function
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
getrange
:返回2D一个基于2D的数组中的范围的值,GetRange
: Return the Values of a Range in a 2D One-Based Array