300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 利用VBA给Excel或WPS表格添加自定义函数(如方位角函数)

利用VBA给Excel或WPS表格添加自定义函数(如方位角函数)

时间:2023-09-15 23:04:12

相关推荐

利用VBA给Excel或WPS表格添加自定义函数(如方位角函数)

在Excel或WPS表格中要使用VBA需要先打开“开发工具”菜单,打开方式请在网上度一下:

点击“开发工具”菜单,在“开发工具”工具栏上点击“VB编辑器”:

在“VB编辑器”内添加一模块文件(名称任意),在代码区添加函数代码:

如添加一个测量方位角计算的函数,代码如下:

Function Azimuth(Sx As Double, Sy As Double, Ex As Double, Ey As Double, Style As Integer)Dim DltX As Double, DltY As Double, A_tmp As Double, Pi As DoublePi = Atn(1) * 4 '定义PI值DltX = Ex - SxDltY = Ey - Sy + 1E-20A_tmp = Pi * (1 - Sgn(DltY) / 2) - Atn(DltX / DltY) '计算方位角A_tmp = A_tmp * 180 / Pi '弧度转换为十进制度Azimuth = Deg2DMS(A_tmp, Style)End Function

这个函数中要用到一个格式转换函数:

'转换十进制角度为度分秒'Style=-1为弧度格式'Style=0为“DD MM SS”格式'Style=1为“DD-MM-SS”格式'Style=2为“DD°MMˊSS""”格式'Style=其它值时返回十进制度值Function Deg2DMS(DegValue As Double, Style As Integer)Dim tD As Integer, tM As Integer, tS As Double, tmp As Double, SignChar As StringIf Sgn(DegValue) = -1 ThenSignChar = "-"ElseSignChar = ""End IfDegValue = Abs(DegValue)tD = Fix(DegValue)tmp = (DegValue - tD) * 60tM = Fix(tmp)tmp = (tmp - tM) * 60tS = Round(tmp, 1)'-12-27调整,避免出现60分、60秒的情况If tS = 60 ThentM = tM + 1tS = 0End IfIf tM = 60 ThentD = tD + 1tD = 0End IfSelect Case StyleCase -1 '返回弧度If SignChar = "-" ThenDeg2DMS = -DegValue * Atn(1) * 4 / 180ElseDeg2DMS = DegValue * Atn(1) * 4 / 180End IfCase 0Deg2DMS = SignChar & tD & " " & Format(tM, "00") & " " & Format(tS, "00.0")Case 1Deg2DMS = SignChar & tD & "-" & Format(tM, "00") & "-" & Format(tS, "00.0")Case 2Deg2DMS = SignChar & tD & "°" & Format(tM, "00") & "ˊ" & Format(tS, "00.0") & """"Case ElseIf SignChar = "-" ThenDeg2DMS = -DegValueElseDeg2DMS = DegValueEnd IfEnd SelectEnd Function

使用效果如Excel或WPS表格内部函数一样:

将此表格保存或另存为模板即可,也可将模块文件导出,在其它表格中导入就可使用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。