excel - 运行时错误 1004 MDeterm 属性
问题描述
我写了这个函数来计算多边形的面积。由于某些原因,当我在 中的最后一个值时DataRange(4) = 0
,我得到#VALUE!在 Excel 表中。
在代码方面,部分 ,X3 = WorksheetFunction.MDeterm(array3)
得到:
运行时错误 1004:无法在即时窗口中获取 MDeterm 属性。
错误截图
Public Function polygon(DataRange As Variant)
Dim Area As Variant
Dim X1 As Double
Dim X2 As Double
Dim X3 As Double
Dim X4 As Double
Dim array1(1 To 2, 1 To 2) As Variant
Dim array2(1 To 2, 1 To 2) As Variant
Dim array3(1 To 2, 1 To 2) As Variant
Dim array4(1 To 2, 1 To 2) As Variant
array1(1, 1) = 0
array1(1, 2) = DataRange(1)
array1(2, 1) = DataRange(2)
array1(2, 2) = 0
array2(1, 1) = DataRange(2)
array2(1, 2) = 0
array2(2, 1) = 0
array2(2, 2) = -(DataRange(3))
array3(1, 1) = 0
array3(1, 2) = -(DataRange(3))
array3(2, 1) = -(DataRange(4))
array3(2, 2) = 0
array4(1, 1) = -(DataRange(4))
array4(1, 2) = 0
array4(2, 1) = 0
array4(2, 2) = DataRange(1)
X1 = WorksheetFunction.MDeterm(array1)
X2 = WorksheetFunction.MDeterm(array2)
X3 = WorksheetFunction.MDeterm(array3)
X4 = WorksheetFunction.MDeterm(array4)
Area = Abs(0.5 * (X1 + X2 + X3 + X4))
polygon = Area
End Function
解决方案
向该函数提供 2x2 零数组没有问题:
Sub Tester()
Dim arr(1 To 2, 1 To 2)
arr(1, 1) = 0
arr(1, 2) = 0
arr(2, 1) = 0
arr(2, 2) = 0
Debug.Print WorksheetFunction.MDeterm(arr) '>> 0
End Sub
在你的情况下还有其他事情发生。将数组声明为数字类型而不是变体可能有助于追查问题。
推荐阅读
- json - Cloudformation 中的 Cloudwatch 仪表板错误
- javascript - 处理 Web 套接字异步请求时保持数据最新的最佳方法
- c# - 无法理解线程 C# 的行为
- angular - 使用 Angular 11 以反应形式的动态值返回 null
- apache-kafka-streams - spring-cloud-stream 示例项目引发 KafkaStreamsFunctionProcessor 的 NoSuchBeanDefinitionException
- r - 为什么 reactive({ }) 不依赖于不断变化的输入?
- swift - 如何解决此错误 Command PhaseScriptExecution failed with a nonzero exit code
- node.js - 使用 nodejs fs 模块恢复数据
- amazon-s3 - 无法将触发文件上传到 S3 | “放大推送”时出错
- excel - Excel 宏在一台计算机上工作,但在另一台计算机上给出运行时错误 1004