自學(xué)資料(Excel VBA)[收集整理12]
71、1.文件菜單欄(Excel自帶的)
文件就叫Commandbars("File"),你可以在打開命令后加個(gè)菜單,類似的,編輯就是Commandbars("Edit"),視圖就是Commandbars("View"),這些不會(huì)因語言版本不一樣而不同,全部是一樣的。
2.快捷菜單欄
好像那些打印啊、打開文件啊、居中對(duì)齊啊那些呢,叫Commandbars("Standard"),那些字體大小啊,顏色啊,就叫("Formatting")。
3.右鍵
Excel的右鍵也是可以更改的,名叫:Commandbars("Cell")
4.自定義菜單
類似于數(shù)據(jù)透視表的那些浮動(dòng)的窗體,不用名字,用Commandbars.add就可以追加了,最簡單了。如果不能運(yùn)行,記得加個(gè)Application.在Commandbars的前面。
72、由于公司合同較多,每次繳印花稅時(shí),計(jì)算每份印花稅所需要的各面額印花的張數(shù)是一件比較繁瑣的事。如:這份合同需要繳納23元的印花稅則需要買兩張10 元、一張2元、一張1元面額的印花。幸好有Excel這個(gè)財(cái)會(huì)人員的得力工具,我編寫了一段宏代碼來自動(dòng)幫我計(jì)算各面額印花的張數(shù),既快捷又方便。想到還有很多同行要做這項(xiàng)工作,所以寫下來與大家共享。具體操作如下:
新建一個(gè)Excel文件存為stampduty.xls,進(jìn)入宏編輯器(Alt+F11)在ThisWorkbook中加入以下代碼:
'印花稅各面額印花張數(shù)計(jì)算程序 BY-RAY DENG
'用途:已知印花稅額,計(jì)算各面額印花張數(shù)
'使用方法:做好工具條后,只要選擇要計(jì)算的原始數(shù)據(jù),點(diǎn)擊"印花稅面額計(jì)算"工具條即可.
' (請不要選擇全列,否則無效的計(jì)算太多.)
Sub stamp_duty()
Static flagcal As Integer '計(jì)算標(biāo)志,首次計(jì)算時(shí)清空計(jì)算結(jié)果頁,否則在結(jié)果頁追加計(jì)算結(jié)果
Static rowbegain As Integer '計(jì)算結(jié)果頁上可用行號(hào),計(jì)算結(jié)果追加時(shí)從這里開始
Dim filename As String '打開的需要計(jì)算數(shù)據(jù)的文件名
Dim moneytype(7) As Single '定義面額
Dim money As Single
Dim billno As Integer '票額張數(shù)
filename = ActiveWorkbook.Name '記錄當(dāng)前打開的文件名
If filename = VBAProject.ThisWorkbook.Name Then '不要在自身這個(gè)文件中操作
MsgBox "請選擇其它文件中的數(shù)據(jù)!", vbInformation + vbOKOnly
Exit Sub
End If
Application.ScreenUpdating = False '將屏幕更新關(guān)閉,可加快宏的運(yùn)行速度
billno = 0 '計(jì)數(shù)清0
moneytype(0) = 100 '印花稅面額為0.5-100,以0.5為舍入標(biāo)準(zhǔn)
moneytype(1) = 50
moneytype(2) = 10
moneytype(3) = 5
moneytype(4) = 2
moneytype(5) = 1
moneytype(6) = 0.5
VBAProject.ThisWorkbook.Sheets(1).Activate '打開結(jié)果頁
If flagcal = 0 Then '如果為第一次計(jì)算,則清空結(jié)果頁
Cells.Select
Selection.ClearContents
Range("A1").Select
End If
ActiveSheet.Cells(1, 1) = "Origin DA
For i = 0 To 6
ActiveSheet.Cells(1, i + 2) = moneytype(i)
Next i
Workbooks(filename).Activate '轉(zhuǎn)到要計(jì)算的原始數(shù)據(jù)數(shù)據(jù)文件
rowno = ActiveWindow.RangeSelection.Rows.Count '所選區(qū)域有幾行
rowstart = ActiveWindow.RangeSelection.Row '起始行
colstart = ActiveWindow.RangeSelection.Column '起始列
j = rowbegain '結(jié)果頁中寫結(jié)果的起始行
For i = 1 To rowno '開始讀原始數(shù)據(jù)
origindata = Cells(i + rowstart - 1, colstart) '讀原始數(shù)據(jù)
'廣州印花稅尾數(shù)處理方法:過0.5進(jìn)1,不足舍去,剛好為0.5及其倍數(shù)則不變 If origindata * 100 Mod 50 <> 0 Then
money = Round(origindata, 0) '以0.5為界限作四舍五入
Else
money = origindata '整數(shù)及尾數(shù)剛好為0.5不作處理
End If
VBAProject.ThisWorkbook.Sheets(1).Activate '轉(zhuǎn)到結(jié)果頁
ActiveSheet.Cells(i + 1 + j, 1) = origindata '在第一列寫入原始數(shù)據(jù)
Workbooks(filename).Activate ''轉(zhuǎn)到要計(jì)算的原始數(shù)據(jù)數(shù)據(jù)文件
For k = 0 To 6 '循環(huán)計(jì)算各面額所需張數(shù)
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 '在相應(yīng)位置寫入該面額張數(shù)
billno = 0 '清0準(zhǔn)備計(jì)算下一面額
Workbooks(filename).Activate
Next k
rowbegain = rowbegain + 1 '結(jié)果頁中寫結(jié)果的起始行下移一行
Next i
flagcal = flagcal + 1 '計(jì)算次數(shù)累加
rowbegain = rowbegain + 1 '添加一空行區(qū)分不同次數(shù)的結(jié)果
Application.ScreenUpdating = True '恢復(fù)屏幕刷新
VBAProject.ThisWorkbook.Sheets(1).Activate '打開結(jié)果頁
End Sub
編好后存盤,退出宏編輯器。開始構(gòu)建一個(gè)工具欄:[工具]—[自定義],點(diǎn)擊[工具欄]---[新建],工具欄名稱定為“印花稅”,這時(shí)會(huì)出現(xiàn),點(diǎn)擊[命令],將 “命令”列表中任意圖標(biāo)拖動(dòng)到這個(gè)工具欄中,在剛拖過來的圖標(biāo)上點(diǎn)右鍵,選擇[命名],將其改為“印花稅面額計(jì)算”,選擇[總是只用文字],這時(shí)會(huì)出現(xiàn),在“印花稅面額計(jì)算”上點(diǎn)一次右鍵,選擇[指定宏],選擇“ThisWorkbook.stamp_duty” ,點(diǎn)[確定]即可。以后要計(jì)算時(shí),只要選好原始數(shù)據(jù),點(diǎn)擊該工具欄即可。
73、Sub AA()
Sheet1.Visible = 2 ‘深度隱藏
Sheet1.Visible = -1 ’顯示
End Sub
轉(zhuǎn)載自 http://bbs.it.com.cn/showtopic-169943.aspx
聯(lián)系客服