工作表中的无法调用函数

时间:2019-02-11 12:21:23

标签: excel vba

我在工作表中找到了要使用的MD5,SHA1等实现: https://en.wikibooks.org/wiki/Visual_Basic_for_Applications/String_Hashing_in_VBA

在开发环境中调用MD5是可行的,但在工作表中是可行的 =MD5(A5;True),其中A5包含测试,我收到#REF!错误。与=MD5("TEST";)=MD5("TEST")相同。

我在做什么错了?

2 个答案:

答案 0 :(得分:2)

MD5是Excel中的单元格地址。是MD列和第5行。

SHA1也是一个地址,对应于SHA列和第1行:

enter image description here

您不能将它们用作函数名称。尝试提出一个更好的名称,例如hashMd5hashSha1

答案 1 :(得分:0)

您需要将功能名称从MD5更改为其他内容。

Public Function BRGMOZ(ByVal sIn As String, Optional bB64 As Boolean = 0) As String
    'Set a reference to mscorlib 4.0 64-bit

    'Test with empty string input:
    'Hex:   d41d8cd98f00...etc
    'Base-64: 1B2M2Y8Asg...etc

    Dim oT As Object, oMD5 As Object
    Dim TextToHash() As Byte
    Dim bytes() As Byte

    Set oT = CreateObject("System.Text.UTF8Encoding")
    Set oMD5 = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")

    TextToHash = oT.Getbytes_4(sIn)
    bytes = oMD5.ComputeHash_2((TextToHash))

    If bB64 = True Then
       BRGMOZ = ConvToBase64String(bytes)
    Else
       BRGMOZ = ConvToHexString(bytes)
    End If

    Set oT = Nothing
    Set oMD5 = Nothing

End Function

并添加引用“ mscorelib”

enter image description here

编辑: Vityata已回答,对不起。