|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
会计账查询.rar
(91.02 KB, 下载次数: 45)
- Dim k&, arr, brr(1 To 1000, 1 To 12)
- Dim mD数#, mD额#, mC数#, mC额#, yD数#, yD额#, yC数#, yC额#
- Sub 明细账查询()
- Dim i&, no$, j%
- Range("b8:i1500").ClearContents '清除数据区
- Range("b8:i1500").Borders.LineStyle = xlNone '清除网格线
- Range("b8:i1500").Interior.Pattern = xlNone '删除底色
- no = Range("d4") '科目代码定义为no
- arr = Sheets("凭证明细表").Range("a2:j" & Sheets("凭证明细表").Range("a20000").End(3).Row) '.CurrentRegion '分录源表装入数组arr
- k = 0
- For i = 1 To UBound(arr)
- Set c = Sheets("期初余额").Range("a:a").Find(no, , , , , 1)
- If k = 0 And Not c Is Nothing Then
- k = k + 1
- brr(k, 4) = "上年结转" 'brr数组第1行的第4列= “期初余额”
- brr(k, 8) = Sheets("期初余额").Range("c" & c.Row) 'brr数组第1行的第8列的“余额”
- If Range("I4") = "借" Then '如果是借方科目,则如下:
- brr(k, 7) = IIf(brr(k, 8) > 0, "借", IIf(brr(k, 8) < 0, "贷", "")) '借或贷行赋值
- Else '否则是贷方科目如下:
- brr(k, 7) = IIf(brr(k, 8) > 0, "贷", IIf(brr(k, 8) < 0, "借", "")) '借或贷行赋值
- End If
- End If
- If arr(i, 1) = no Then 'arr第1列的科目编码
- k = k + 1
- '===============主表区共6列赋值(中间有几列空列不赋值)
- On Error Resume Next
- If k > 1 Then '如果大于第一行
- If arr(i, 5) <> brr(k - 1, 1) And brr(k - 1, 4) <> "上年结转" Then '如果本行第1列的月份不等于上一行的月份或都不等于“上年结转”
- 按月汇总 '插入本月合计和本年累计(从第1个月到最后一个月的上一月用此代码)
- End If
- End If '上面是先判定本行是否属于下一月份,如果是先操作上面的月结,然后进入下面的按逐行顺序赋值
- brr(k, 1) = arr(i, 5) '第1列月
- brr(k, 2) = arr(i, 6) '第2列日
- brr(k, 3) = arr(i, 7) '第3列凭证号
- brr(k, 4) = arr(i, 8) '第4列摘要
- brr(k, 5) = arr(i, 9) '第5到借方
- brr(k, 6) = arr(i, 10) '第6到贷方
- '================余额栏计算
- r = IIf(brr(k - 1, 4) = "本年累计", 3, 1) '计算余额列的上一行的行号,如果是新月份的开始行上一行余额是本行-3行,否则是本行政1行
- If Range("I4") = "借" Then '如果是借方科目,则如下:
- brr(k, 8) = Round(brr(k - r, 8) + brr(k, 5) - brr(k, 6), 2) '余额行的数量计算
- brr(k, 7) = IIf(brr(k, 8) > 0, "借", "贷") '借或贷行赋值
- Else '否则是贷方科目如下:
- brr(k, 8) = Round(brr(k - r, 8) + brr(k, 6) - brr(k, 5), 2) '余额行的数量计算
- brr(k, 7) = IIf(brr(k, 8) > 0, "贷", "借") '借或贷行赋值
- End If
- '================借贷方的本月合计(按月周期)本年累计(从头到尾)逐行累加
- mD额 = mD额 + brr(k, 5) '上一行内存中的本月借方金额累计数和本行借方金额累加
- mC额 = mC额 + brr(k, 6) '上一行内存中的本月贷方金额累计数和本行贷方数量累加
- End If
- Next i
- On Error Resume Next
- If k > 0 Then '如果不是空科目,即数组不为空
- If Len(brr(k, 1)) > 0 Then '如果当前第1列是有月份的数据行(不是上年转入,本年合计、本年累计)
- k = k + 1 '最后一月的下一行行号(本月合计行)
- 按月汇总 '插入最后一月的本月合计和本年累计
- End If
- End If
- Range("b8").Resize(k, 8) = brr 'brr赋值
- ' Range("AR1") = 1 '页码切换为第1页
- Range("b8").Resize(k, 8).Borders.LineStyle = xlContinuous '添加边框线
- For i = 9 To k + 8
- If Cells(i, 5) = "本月合计" Or Cells(i, 5) = "本年累计" Then
- Cells(i, 2).Resize(1, 8).Interior.ColorIndex = 20 '底色为浅蓝色
- End If
- Next
- Erase arr ' 清空arr
- Erase brr '清空brr
- k = 0 '清空行变量
- ' yD数 = 0 '当月借方累计数量清0
- yD额 = 0 '当月借方累计金额清0
- ' yC数 = 0 '当月借方累计数量清0
- yC额 = 0 '当月贷方累计金额清0
- End Sub
- Private Sub 按月汇总()
- brr(k, 4) = "本月合计"
- brr(k, 5) = mD额 '本月合计借方金额
- brr(k, 6) = mC额 '本月合计贷方金额
- yD额 = yD额 + mD额 '本年累计借方金额 = 上月余额(内存取出)+本月合计
- yC额 = yC额 + mC额 '本年累计贷方金额 = 上月余额(内存取出)+本月合计
- brr(k + 1, 4) = "本年累计" '
- brr(k + 1, 5) = yD额 '借方金额本年累计赋值
- brr(k + 1, 6) = yC额 '贷方金额本年累计赋值
- mD额 = 0 '当月借方累计数清0
- mC额 = 0 '当月贷方累计数清0
- k = k + 2
- End Sub
复制代码
|
评分
-
1
查看全部评分
-
|