VBA中UBound函数问题
发布网友
发布时间:2022-04-26 00:38
我来回答
共1个回答
热心网友
时间:2022-04-26 02:07
Private Function shk(应收, 资金, 应付, biaom)
Dim h As Byte, x As Byte, y As Byte, s%, hr '%声明3个字节变量1个整数变量,还有....,最后一个变量没有声明类型,默认为Variant,这是一个不好的习惯,看下面的赋值可以声明为integer
hr = Array(11, 13, 18, 19)
h = 8
y = 10
'**********************************************写入应付款*******************************
''//*******
With .... End With,一般用于对象层次比较多时,这时不建议使用。
该结构内用到With 后跟的对象时,可以省略,如
s = .Cells(Rows.Count, 3).End(3).Row + 1 等同于
s = Sheets("应付账款").Cells(Rows.Count, 3).End(3).Row + 1
''//
With Sheets("应付账款")
'获收"应付账款"表里现有行数后加1;若等于5,则s=7,它用来指定应付账款存放的开始行(与上面的内容之间空一行)
s = .Cells(Rows.Count, 3).End(3).Row + 1
If s = 5 Then s = s + 2
.Cells(s, 1).Value = 应收(6, 1) '不知道为何先存放了一个应收账款到应付账款内
''//
UBound(hr),是数组的上边界,第一个元素标号默认为0,这里hr有4个元素,
所以UBound(hr)=3
两个For 语句嵌套使用,循环获取取指定范围内的所有单元格内的值,并依次追加到"应付账款"表格内。
''//
For q = 0 To UBound(hr) '外循环,循环hr数组各元素指定的行
'内循环,循环自第2列至22列的内容;外循环每循环1次,内循环都要循环22-2+1次,注意for与while的区别
For x = 2 To 22
.Cells(s, x) = 应付(hr(q), x)
Next
s = s + 1'每取完一行数据,"应付账款"表格内当前行下移一行
Next
End With
ok!