485通讯线用什么线:自学资料(Excel VBA)[收集整理12]

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 11:33:45

自学资料(Excel VBA)[收集整理12]

默认分类   2009-08-01 12:09   阅读58   评论0   字号: 大大  中中  小小

71、1.文件菜单栏(Excel自带的)
文件就叫Commandbars("File"),你可以在打开命令后加个菜单,类似的,编辑就是Commandbars("Edit"),视图就是Commandbars("View"),这些不会因语言版本不一样而不同,全部是一样的。
2.快捷菜单栏
好像那些打印啊、打开文件啊、居中对齐啊那些呢,叫Commandbars("Standard"),那些字体大小啊,颜色啊,就叫("Formatting")。
3.右键
Excel的右键也是可以更改的,名叫:Commandbars("Cell")
4.自定义菜单
类似于数据透视表的那些浮动的窗体,不用名字,用Commandbars.add就可以追加了,最简单了。如果不能运行,记得加个Application.在Commandbars的前面。
72、由于公司合同较多,每次缴印花税时,计算每份印花税所需要的各面额印花的张数是一件比较繁琐的事。如:这份合同需要缴纳23元的印花税则需要买两张10 元、一张2元、一张1元面额的印花。幸好有Excel这个财会人员的得力工具,我编写了一段宏代码来自动帮我计算各面额印花的张数,既快捷又方便。想到还有很多同行要做这项工作,所以写下来与大家共享。具体操作如下:
  新建一个Excel文件存为stampduty.xls,进入宏编辑器(Alt+F11)在ThisWorkbook中加入以下代码:
'印花税各面额印花张数计算程序 BY-RAY DENG
'用途:已知印花税额,计算各面额印花张数
'使用方法:做好工具条后,只要选择要计算的原始数据,点击"印花税面额计算"工具条即可.
' (请不要选择全列,否则无效的计算太多.)
Sub stamp_duty()
Static flagcal As Integer '计算标志,首次计算时清空计算结果页,否则在结果页追加计算结果
Static rowbegain As Integer '计算结果页上可用行号,计算结果追加时从这里开始
Dim filename As String '打开的需要计算数据的文件名
Dim moneytype(7) As Single '定义面额
Dim money As Single
Dim billno As Integer '票额张数
filename = ActiveWorkbook.Name '记录当前打开的文件名
If filename = VBAProject.ThisWorkbook.Name Then '不要在自身这个文件中操作
MsgBox "请选择其它文件中的数据!", vbInformation + vbOKOnly
Exit Sub
End If
Application.ScreenUpdating = False '将屏幕更新关闭,可加快宏的运行速度
billno = 0 '计数清0
moneytype(0) = 100 '印花税面额为0.5-100,以0.5为舍入标准
moneytype(1) = 50
moneytype(2) = 10
moneytype(3) = 5
moneytype(4) = 2
moneytype(5) = 1
moneytype(6) = 0.5
VBAProject.ThisWorkbook.Sheets(1).Activate '打开结果页
If flagcal = 0 Then '如果为第一次计算,则清空结果页
Cells.Select
Selection.ClearContents
Range("A1").Select
End If
ActiveSheet.Cells(1, 1) = "Origin DATA" '先写上表头
For i = 0 To 6
ActiveSheet.Cells(1, i + 2) = moneytype(i)
Next i
Workbooks(filename).Activate '转到要计算的原始数据数据文件
rowno = ActiveWindow.RangeSelection.Rows.Count '所选区域有几行
rowstart = ActiveWindow.RangeSelection.Row '起始行
colstart = ActiveWindow.RangeSelection.Column '起始列
j = rowbegain '结果页中写结果的起始行
For i = 1 To rowno '开始读原始数据
origindata = Cells(i + rowstart - 1, colstart) '读原始数据
'广州印花税尾数处理方法:过0.5进1,不足舍去,刚好为0.5及其倍数则不变 If origindata * 100 Mod 50 <> 0 Then
money = Round(origindata, 0) '以0.5为界限作四舍五入
Else
money = origindata '整数及尾数刚好为0.5不作处理
End If
VBAProject.ThisWorkbook.Sheets(1).Activate '转到结果页
ActiveSheet.Cells(i + 1 + j, 1) = origindata '在第一列写入原始数据
Workbooks(filename).Activate ''转到要计算的原始数据数据文件
For k = 0 To 6 '循环计算各面额所需张数
While money >= moneytype(k)
money = money - moneytype(k)
billno = billno + 1
Wend
VBAProject.ThisWorkbook.Sheets(1).Activate
ActiveSheet.Cells(i + 1 + j, k + 2) = billno '在相应位置写入该面额张数
billno = 0 '清0准备计算下一面额
Workbooks(filename).Activate
Next k
rowbegain = rowbegain + 1 '结果页中写结果的起始行下移一行
Next i
flagcal = flagcal + 1 '计算次数累加
rowbegain = rowbegain + 1 '添加一空行区分不同次数的结果
Application.ScreenUpdating = True '恢复屏幕刷新
VBAProject.ThisWorkbook.Sheets(1).Activate '打开结果页
End Sub
编好后存盘,退出宏编辑器。开始构建一个工具栏:[工具]—[自定义],点击[工具栏]---[新建],工具栏名称定为“印花税”,这时会出现,点击[命令],将 “命令”列表中任意图标拖动到这个工具栏中,在刚拖过来的图标上点右键,选择[命名],将其改为“印花税面额计算”,选择[总是只用文字],这时会出现,在“印花税面额计算”上点一次右键,选择[指定宏],选择“ThisWorkbook.stamp_duty” ,点[确定]即可。以后要计算时,只要选好原始数据,点击该工具栏即可。
73、Sub AA()
Sheet1.Visible = 2 ‘深度隐藏
Sheet1.Visible = -1 ’显示
End Sub


转载自 http://bbs.it.com.cn/showtopic-169943.aspx