首页 > 解决方案 > 运行时错误 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

标签: excelvba

解决方案


向该函数提供 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

在你的情况下还有其他事情发生。将数组声明为数字类型而不是变体可能有助于追查问题。


推荐阅读