EXCEL VBA 数组下边界总是固定的数值如何自动修改

qq_36239873 2017-08-22 02:57:08
问题:数组的 UBound(arr) -- '这个数值得到一次值后不会按实际改变,如何处理。怎么上传附件?
方便请联系QQ1104859173

Private Sub CommandButton21_Click()
Dim arr, arrtemp
Dim i%, j%, s% '数组用变量
'************************************** '表三丙汇总数据
Sheets("表三丙").Activate
arr = Sheets("表三丙").Range("A1:L" & [c3000].End(xlUp).Row)
MsgBox UBound(arr) '这个数值不会按实际改变,显示1543,实际是1422
ReDim arrtemp(1 To UBound(arr), 1 To 12)
s = 0
For i = 8 To UBound(arr) '数据区域从第8行开始'
If IsNumeric(arr(i, 5)) = True And arr(i, 5) > 0 Then '数量列为数值型且值>0的行选中
s = s + 1
For j = 2 To 12 'A列为原表序号不选择
arrtemp(s, j) = arr(i, j)
arrtemp(s, 1) = s '这列为新编序号
Next
End If
's 取得有效数据行数
Next
Sheets("表三丙").Range("a1675").Resize(s, 12) = arrtemp '从数组粘贴值
'*************************************
Sheets("表三乙").Activate
arr = Sheets("表三乙").Range("A1:L" & [c3000].End(xlUp).Row)
MsgBox UBound(arr) '这个数值不会按实际改变,显示1683,实际是1543

ReDim arrtemp(1 To UBound(arr), 1 To 12)
s = 0
For i = 8 To UBound(arr) '数据区域从第8行开始'
If IsNumeric(arr(i, 5)) = True And arr(i, 5) > 0 Then '数量列为数值型且值>0的行选中
s = s + 1
For j = 2 To 12 'A列为原表序号不选择
arrtemp(s, j) = arr(i, j)
arrtemp(s, 1) = s '这列为新编序号
Next
End If
's 取得有效数据行数
Next
Sheets("表三乙").Range("a1516").Resize(s, 12) = arrtemp '从数组粘贴值

End Sub
...全文
946 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-08-23
  • 打赏
  • 举报
回复
UBound 函数 返回一个 Long 型数据,其值为指定的数组维可用的最大下标。 语法 UBound(arrayname[, dimension]) UBound 函数的语法包含下面部分: 部分 描述 arrayname 必需的。数组变量的名称,遵循标准变量命名约定。 dimension 可选的;Variant (Long)。指定返回哪一维的上界。1 表示第一维,2 表示第二维,如此等等。如果省略 dimension,就认为是 1。 说明 UBound 函数与 LBound 函数一起使用,用来确定一个数组的大小。LBound 用来确定数组某一维的上界。 对具有下述维数的数组而言,UBound 的返回值见下表: Dim A(1 To 100, 0 To 3, -3 To 4) 语句 返回值 UBound(A, 1) 100 UBound(A, 2) 3 UBound(A, 3) 4
舉杯邀明月 2017-08-22
  • 打赏
  • 举报
回复
UBound( ) 是获取数组下标的“上界值”, 跟数组的大小(如果是动态数组,取决于调用时的实际情况)、下标的“下界值(起始下标)”,   以及“第几维”(如果是多维数组)相关,你去修改它干什么!!! 你真要想“改”,只要用 Redim重新指定数组大小就行了。 如果是“固定数组”,可以通过修改数组描述符中相关参数来更改(当然动态数组也可以这样改)。 只是,真有这种操作的必要 ???

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧