arrays - 引用 1 个单元格时出现 Ubound 的 VBA 错误
问题描述
我试图理解 VBA 中的数组,但我有点挣扎,尤其是这些行。我不明白为什么,当我所指的范围是一个或两个单元格时,我会得到一个与 UBound 不匹配的错误类型 13。
Dim var2 As Variant
sArray2() As String
Dim i As Long
Dim range2 As Range
lastrow = Workbooks(Umsatzdatenbank).Sheets("Filter").Range("P" & _
Rows.Count).End(xlUp).Row
Set range2 = Workbooks(Umsatzdatenbank).Sheets("Filter").Range("P3:P" & _
lastrow)
var2 = range2.Value
ReDim sArray2(1 To UBound(var2))
For i = 1 To (UBound(var2))
sArray2(i) = var2(i, 1)
Next
解决方案
当您将单个单元格的值分配给变量时,该变量将是单个值,而不是数组。这就是 Excel/VBA 的工作方式,您无法更改。
您可以检查您的变量var2
(不是变量恕我直言的最佳名称)是否是一个数组并对其做出反应,例如:
var2 = range2.Value
If IsArray(var2) Then
ReDim sArray2(1 To UBound(var2))
For i = 1 To (UBound(var2))
sArray2(i) = var2(i, 1)
Next
Else
ReDim sArray2(1 To 1)
sArray2(1) = var2
End If
推荐阅读
- python - 快速排序用户输入十个或八个整数 Python
- google-cloud-speech - Google Cloud Speech - 来自语音上下文短语的姓氏小写
- python - python如何从数据库中读取二进制文件并加载为图片
- php - 使用 php,ajax,jquery 登录页面
- javascript - 如果任何必填字段为空,如何中止 vue.js 方法发布
- java - 使用流从两个数组创建一个数组
- azure - 连接到 SAP HANA 租户数据库的推荐方法
- azure - Blob 名称后缀限制
- ios - UITableView 与 UICollectionView 在一行中重用来自第一行的集合
- python - SQL Server 的 Python 脚本 - 使用 MERGE 更新值