VBA中UBound函数问题

PrivateFunctionshk(应收,资金,应付,biaom)DimhAsByte,xAsByte,yAsByte,s%,hrhr=Array(11,13,18,1... Private Function shk(应收, 资金, 应付, biaom)
Dim h As Byte, x As Byte, y As Byte, s%, hr
hr = Array(11, 13, 18, 19)
h = 8
y = 10
'**********************************************写入应付款*******************************
With Sheets("应付账款")
s = .Cells(Rows.Count, 3).End(3).Row + 1
If s = 5 Then s = s + 2
.Cells(s, 1).Value = 应收(6, 1)
For q = 0 To UBound(hr)
For x = 2 To 22
.Cells(s, x) = 应付(hr(q), x)
Next
s = s + 1
Next
End With
********************************************************************************************
麻烦大神讲解一下上面这段函数的含义,最好能在每条语句后备注;主要是两重FOR循环这边不理解!
展开
 我来答
mfkinfo
2014-11-29 · TA获得超过6348个赞
知道大有可为答主
回答量:4553
采纳率:83%
帮助的人:943万
展开全部
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!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式