Excel VBA中如何支持复数计算?
来源:互联网 发布:ps制作淘宝店铺招牌 编辑:程序博客网 时间:2024/05/16 01:24
答案居然是需要自己定义复数计算。
内置built-in的WorkSheetFunction还是VBA函数都不支持复数类型。
转一个
Option ExplicitConst pi = 3.14159265358979Type Complex re As Double im As DoubleEnd TypePublic Function AddComplex(a As Complex, b As Complex) As Complex AddComplex.re = a.re + b.re AddComplex.im = a.im + b.imEnd FunctionPublic Function MultiplyComplex(a As Complex, b As Complex) As Complex MultiplyComplex.re = a.re * b.re - a.im * b.im MultiplyComplex.im = a.re * b.im + a.im * b.reEnd FunctionPublic Function Conjugate(a As Complex) As Complex Conjugate.re = a.re Conjugate.im = -a.imEnd FunctionPublic Function Modulo(a As Complex) As Double Modulo = Sqr(a.re ^ 2 + a.im ^ 2)End FunctionPublic Function Argument(a As Complex) As Double Dim i As Integer Dim v(1 To 4) As Double If (z.re = 0) And (z.im = 0) Then Argument = -10 'End Function End Ifv(1) = ArcSin(z.im / Modulo(z))v(2) = mcPI - v(1)v(3) = ArcCos(z.re / Modulo(z))v(4) = -1 * v(3)For i = 1 To 4While v(i) > mcPIv(i) = v(i) - 2 * mcPIWendWhile v(i) < mcPIv(i) = v(i) + 2 * mcPIWendNext iIf v(1) = v(3) Then Argument = v(1)If v(2) = v(3) Then Argument = v(2)If v(1) = v(4) Then Argument = v(1)If v(2) = v(4) Then Argument = v(2)End Function' Code by : Steven Roland Bazinet (ArcSin function only)Private Function ArcSin(vntSine As Variant) As DoubleOn Error GoTo ERROR_ArcSineConst cOVERFLOW = 6Dim blnEditPassed As BooleanDim dblTemp As DoubleblnEditPassed = FalseIf IsNumeric(vntSine) ThenIf vntSine >= -1 And vntSine <= 1 ThenblnEditPassed = TruedblTemp = Sqr(-vntSine * vntSine + 1)If dblTemp = 0 ThenArcSin = Sgn(vntSine) * pi / 2ElseArcSin = Atn(vntSine / dblTemp)End IfEnd IfEnd IfEXIT__ArcSine:If Not blnEditPassed Then Err.Raise cOVERFLOWExit FunctionERROR_ArcSine:On Error GoTo 0blnEditPassed = FalseResume EXIT__ArcSineEnd Function' Code by : PaperCut, based (very much!) on Steven R Bazinet's codePrivate Function ArcCos(vntcos As Variant) As DoubleOn Error GoTo ERROR_ArcSineConst cOVERFLOW = 6Dim blnEditPassed As BooleanDim dblTemp As DoubleblnEditPassed = FalseIf IsNumeric(vntcos) ThenIf vntcos >= -1 And vntcos <= 1 ThenblnEditPassed = TruedblTemp = Sqr(-vntcos * vntcos + 1)If dblTemp = 0 ThenArcCos = Sgn(vntcos) * pi / 2ElseArcCos = Atn(dblTemp / vntcos)End IfEnd IfEnd IfEXIT__ArcCos:If Not blnEditPassed Then Err.Raise cOVERFLOWExit FunctionERROR_ArcCos:On Error GoTo 0blnEditPassed = FalseResume EXIT__ArcSineEnd Function
0 0
- Excel VBA中如何支持复数计算?
- excel 2007中如何打开VBA编辑器
- excel 2007中如何打开VBA编辑器
- Delphi中如何调用Excel VBA
- excel中如何编写VBA代码
- Delphi中如何调用Excel VBA
- 如何让Excel VBA IDE支持鼠标滚轮
- Excel中不使用vba完成借款计算
- excel中定义VBA
- VBA中数字计算
- 【excel VBA】excel 计算字符串相似度
- Excel中使用VBA时如何访问单元格
- 在EXCEL中如何使用VBA进行格式转化
- 如何在Excel VBA 中读写word文档 步骤
- 在Excel VBA中如何能够使用ADODB对象?
- excel中如何利用VBA批量生成XML文件
- [Excel VBA] 在VBA中如何将SQL得到的数据直接赋值到数组?
- excel如何调用VBA代码
- [Android] 在ScrollView 中嵌套 GridView/ListView时只显示一行的原因和解决办法
- 第十、十一周阅读程序 继承和派生(1)
- [jvm解析系列][七]字段表集合、volatile、volatile和属性表集合,你的变量该如何存储?
- 个人所得税计算器
- 解决MySql Error Code:2006–MySQL服务器已离线错误
- Excel VBA中如何支持复数计算?
- androidStudio 中的关于 dataBinding 的使用
- Android系统自带样式(@android:style/)
- Android开发之友录项目层次结构
- hadoop源码分析(2):Map-Reduce的过程解析
- 264. Ugly Number II
- task_struct结构体字段介绍--Linux中的PCB
- Eclipse快捷键
- ADT转AndroidStudio建议