VBA自定义函数大全.docx
《VBA自定义函数大全.docx》由会员分享,可在线阅读,更多相关《VBA自定义函数大全.docx(111页珍藏版)》请在三一文库上搜索。
1、VBA自定义函数大全龙族联盟论坛Shcnmartin收佻整理1.函数作用,返回Co1.umn英文字#样#样#FunctionCo1.1.etter(Co1.NumberAsInteger)AsStringOnErrorGoToErrorhand1.erCo1.1.etter-1.eft(Ce1.1.S(IJCo1.Number).Address(0,0),1-(Co1.Number26)ExitFunctionErrorhand1.er:MsgBox,Errorencountered,p1.easere-enterEndFunction碗#力2函数作用,查询某一值第num次出现的值,参数说明:
2、Va1.ue1.:查询引用的数位;Range1.:在询区域;num:指定杳询第几次出现;Co1.:返回值,相对引用区域,相对引用列的右数第Co1.列#样#样#样#FunctionMyFind(VaIUe1,ByVa1.Range1.AsRange,ByVa1.numAsInteger,ByVa1.Co1.AsInteger)IfVa1.ue1.“ThenExitFunctionIfRange1.Co1.umnsXount1ThenExitFunctionForEachDInRange1.IfD.Va1.ue三Va1.ue1.Thencc1Ifc=numThenv1.=D(1.,Co1.)Exi
3、tForEndIfE1.seIfIsEmpty(D)ThenExitForEndIfNextIfv1.=wwThenv1.三“not”MyFind=v1.EndFunction,3.函数作用:返回当个人工资希金所得为2ee元(起征点为850元)时的应纳个人所得税税额ifi法:Grsds(bsc,mysa1.a),参数说明;bsc:必选攻,为起征点,包括税法规定的工费展数8。元加上允许税前扣除的合理费用;,mysa1.a:必选项.为人个工资薪金所得.,示例:GrSdS(85。,20000)=FunctionGrSdS(bscAsDoub1.e,mysa1.aAsDoub1.e)AsDoub1.e
4、bsc为起征点加上允许税的扪除的合理费用,mysa1.a为工资薪金所得OnErrorGoToGrsds-errSe1.ectCasemysa1.aCaseIs-bscGrsds-0CaseIs=bsc+50Grsds=App1.ication.WorksheetFunction-RoundC(mysa1.a-bsc)*0.05,2)CaseIsbsc+2000Grsds=App1.ication.WorksheetFunction.Round(mysa1.a-bsc)0.1-25,2)CaseIs三bsc+5000Grsds-App1.ication.WorksheetFunction.Ro
5、und(mysa1.a-bsc)0.15-125,2)CaseIs=bsc+20GrsdsHAPPIiCatiOn.WorksheetFunction.Round(mysa1.a-bsc)*0.2-375,2)CaseIs=bsc+4Grsds=App1.ication.WorksheetFunction.RoundC(mysa1.a-bsc)”0.25-1375,2)CaseIs-bsc+60000Grsds=App1.ication.WorksheetFunction.Rond(aysa1.a-bsc)*0.3-3375,2)CaseIs三bsc+80000Grsds-App1.icati
6、on.WorksheetFunction.Round(mysa1.a-bsc)0.35-6375,2)CaseIs0i=i11.oopmydataVaI(Mid(InyString,i,1.en(mystring)-i1)EndFunction6,函数作用:按Sp1.itType取得RangeName串值中的起始位JK样#样#样#材#样#1:单兀格,2:行号,3:列号.4:范困Pub1.icPub1.icPub1.icPub1.icConstConstConstConstSING1.ECE1.1.-1ROWNUM-2CO1.NUM=3RANGEA1.1.=4Pub1.icFunctionSp1
7、itRangeName(RangeNameAsString,Sp1.itTypeAsInteger)AsStringIfVBA.1.en(RangeName)eThenRangeName-VBA.1.eft(RangeName,VBA.InStr(1.,RangeName,:)-1)Se1.ectCaseSp1.itTypeCaseSING1.E_CE1.1.IfVBA.1.nStr(1.,RangeName,:)0ThenSp1.itRangeName-&VBA.1.eft(RangeNamejVBA.InStr(1.jRangeName,-1)E1.seSp1.itRangeName三S
8、RangeNameEndIfCaseROW_NUMSp1.itRangeName=VBA.IIf(VBA.InStr(1.,RangeName,$),VBA.RIght(RangeNaae,VBA.1.en(RangeNaae)-VBA.1.Str(1.,RangeName,5),RangeName)IfNotIsNumeric(Sp1.itRangeName)ThenSp1.itRangeName=MsgBox,VbInformation,EndIfCaseCO1._NUMIfVBA.InStr(1.,RangeName,$)ThenSp1.itRangeName-VBA.1.eft(Ra
9、ngeName,VBA.IStr(1.,RangeName,$)-1)E1.seSp1.itRangeName=RangeNameEndIfIfIsNumeric(Sp1.itRangeName)ThenSp1.itRangeName=MsgBoxVbInformationjEndIfCaseRANGE_A1.1.Sp1.itRangeName=&RangeNameEndSe1.ectEndIfEndFunction一A*一一AA.A.X.A1.A.1.uaaau*A*aaauaA,7.a数作用:将金额数字转成中文大写#FunctionMOney(NUmberAsCurrency)Dimi,j
10、k,m,IengAsInteger计数播DimZeroAsInteger连社:专标识DimTnumberAsString0存数小,计算数组长度DimNUm()AsString,定义数组DimNum1.(3)AsString访7,元以下数7DimNum2(1.)AsString储存拆分后的数7DimCha(8),Cha1.(9),Cha2(4)AsString储存转化后的汉字DimZchaAsString连接出的字符串DimF1.ag,F1.ag1.AsBoo1.ean正负标志F1.ag-TrueF1.ag1.=Fa1.seZero=如果大于一亿,则不处理If(Number99999999)O
11、r(NumberJ卜,你一有那么多(吗?)Money-Sorry!E1.seIf(Number=0)ThenMoney-兀”E1.se将负数数字转化正数并更改标识If(Number0)ThenTnumber-CStr(Int(Number1.)/100)E1.seTnumber=CStr(Number)EndIf处理四舍五入If(Number-Int(Number)1.-Int(Number-Int(Number)*1.)=.5)ThenTnumber三CStr(CCur(Tnumber)+0.01)EndIfNumber=CCur(Tnumber)*或新分配数殂空间*ReDimNum(1.e
12、n(Tnumber)-1)AsString将字符中分开存储至数组中Fori=0To1.en(Tnumber)-1Num(i)=Mid(Tnumberji+1,1)Nexti,定义所需字符,.DimM1.,M2M1.-Array(,w,叁,评,,陆,柒,捌,玖)M2=Array拾,佰,1F,n7in,E)*处理小于一元金撇*小数点后一位,则*If(Number-Int(Number)And(Number*Iee-Int(Number)*100)Mod1.)-)Theni=i-1NUm2(。)=Num(I)Num(i)三i-i-1Num(i)=i=i-1Cha2()-M1.(CByte(NUm2(
13、e)Cha2(1.)=角Cha2(2)=整”E1.se*小钦点后两位则*If(Number-Int(Number)0)Theni=i-1Num2(1.)=Num(i)Num2()-Num(i-1)Num(i)m-i=i-1Num(i)=-i-i-1Nm(i)-,i=i-1Cha2()=MI(CByte(NUm2(0)Cha2(1.)-“角”Cha2(2)-N1.(CByte(NUm2(1)Cha2(3)=分EndIfEndIf,分解大于一万的整数部分If(Int(Number)9999)ThenIf(Cha2(),)Theni-i+1EndIfForj=3To0Step-1Num1.(j)=N
14、um(i-1)Num(i-1)-i-i-1NextjE1.seIf(Cha2()Theni-i+1EndIfForj=0Toi-1Nua1.(J)Nun(J)Nn(j)“NextjEndIf*,*转换万元以上数字If(Num(0)ThenIeng=ij=Fork三ToIeng-1If(Nun(k)-0)ThenZero=Zero+1Form=1To5If(Cha(j-1)-M2(m)ThenF1.ag1.-TrueEndIfNextmIf(Zero1)And(F1.ag1.三Fa1.se)ThenCha(j)-M1.(CByte(Num(k)EndIfIf(Zero=1)Thenj三j+1En
15、dIfE1.seIf(Num(k)ThenIf(Zero)ThenCha(j-1)=-.-EndIfCha(j)=M1.(CByte(Num(k)EndIfj-j1EndUIf(Nm(k)=0)Theni三i-1E1.seCha(j)=M2(i-1)Zero-EndIfNextkCha(j-1),7,Zero0EndIf*转换万元以下数字*If(Num1.(0)Thenj-F1.ag1.=Fa1.seIeng=3Whi1.e(Num1.(Ieng)-)Ieng-Ieng-1Wendi=Ieng+1Fork三ToIengIf(Num1.(k)JThenIf(Num1.(k)=0)ThenZero
16、Zero+1Form-1To5If(j0)ThenIf(Cha1.(j-1)=M2(m)ThenF1.ag1.=TrueEndIfEndIfNextmIf(Zero=1)And(F1.ag1.=Fa1.se)ThenCha1.(j)-M1.(CByte(Num1.(k)EndIfIf(Zero=1)Thenj=j1EndIfE1.seIf(Num1.(k)-)ThenIf(Zero)ThenCha1.(j-1)苓“EndIfCha1.(j)=M1.(CByte(Num1.(k)EndIfj-j+1EndIfIf(Nun1.(k)=0)ThenE1.seCha1.(j)-M2(i-1)j=j+
17、1Zero三0EndIfEndIfNextkCha1.(j-1)-c,If(Cha2(0)-)Thenchai(j)=*rrEndIfEndIf连接字符小j=0Whi1.e(Cha(j)Zcha-Zcha&Cha(J)j-j1Wendj=Whi1.e(Cha1.(j)ZchaZcha&Cha1.(j)j=j+1Wendj-Whi1.e(Cha2(j)Zcha=Zcha&Cha2(j)j=j+1Wend,,最终显示,If(F1.ag)ThenMoney=ZChaE1.seMoney=负”&ZchaEndIfEndIfEndIfEndFunction8.函数作用:计算某种税金#样#Pub1.icF
18、unction税(fa)DimXIf(fa-800)0And(fa-80)三500And(fa-8)=20And(fa-8O)=SeAnd(fa-800)-2000And(fax=(fa-8)*.25-1375税XE1.seIf(fa-800)4000And(faX-(fa-800)*0.3-3375税=E1.seIf(fa-80)=60And(faX-(fa-800)*.35-6375税=XE1.seIf(fa-8)=8eAnd(fax=(fa-80)*0.4-10375税E1.seIf(fa-800)-100000Thenx=(fa-8)*0.45-15375税*X-8e)40000The
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 自定义 函数 大全
