VBA中UBound函数问题
的有关信息介绍如下:问题补充说明: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循环这边不理解!
PrivateFunctio来自nshk(应收,资金,应付,biaom)
DimhAsByte,xAsByte,水已周光丰诗照季土罪促yAsByte,s%,hr'%声明3个字节变量1个整数变量,还有....,最后一个变量没有360问答声明类型,默认为Variant,这是一个不好的习惯,看下面的赋值可以声明为integer
hr=Array(11,13,18,19)
h=8
y=10
'***低九田品析见教审*******************************************写入应付款每事活顾鲁受官技*******************************
''//*******
With....EndWith,一般用于对象层次比较多时,这时不建议使用。
该结构内用到With后跟的对象时更手输支留正,可以省略,如
s=.Cells(Rows.Count,3).End(3).Row+1等同于
s=Sheets("应付账款").Cells(Rows.Count,3).End(3).Row+1
''//
WithSheets("应付账款")
'获收"应付账款"表连盾目触里现有行数后加1;若且未据要农座内官等于5,则s=7,它用来指定应经婷经错双定工非析付账款存放的开始行(与上面的内容之间空一行)
s=.Cells(Rows.Count,3).End(3).Row+1
Ifs=5Thens=s+2
.Cells(s,1).Value=应收(6,1) '不知道为何先存放了一个应收账款到应付账款内
''//
UBound(hr),是数组的上边界,第一个元素标号默认为0,这里hr有4个元素,
所以UBound(hr)=3
两个For语句嵌套使用,循环获取取指定范围内的所有单元格内的值,并依次追加到"应付账款"表格内。
''//
Forq=0T顶造陆浓底背设oUBound(hr)'外循环,循环hr数组各元素指定的行
'内循环,循环自第2列至22列的内容;外循环每循环1次,内循环都要循环22-2+1次,注意for与while的区别
Forx=缩科逐黑甲牛而味京维2To22
.Cells(s,x)=应付(hr(q),x)
Next
s=s+1'每取完一行数据,"应击判出混食付账款"表格内当前行护事财占限场黑板呢下移一行
Next
End达船With
ok!