函数在代码中工作,但不能作为工作表中的 UDF

Posted

技术标签:

【中文标题】函数在代码中工作,但不能作为工作表中的 UDF【英文标题】:Function works in code but not as a UDF in Sheet 【发布时间】:2015-08-27 16:46:17 【问题描述】:

我编写了一个函数,该函数在 A:A 列中搜索字符串(作为输入传递)并返回 A:A 范围内包含该字符串的第一个单元格的完整内容...

当我从Sub test() 调用它时,该函数工作正常,但我不能直接在工作表中使其工作......即通过编写=Find_First("lala")。尽管这段文字确实在 A:A 中,但它只是返回“未找到”

这是我的代码.. 感谢您的帮助!!

Public Function Find_First(FindString As String) As String

    Dim Rng As Range
    Dim TrimString As String

     Application.Volatile True

    TrimString = Trim(FindString)

    If TrimString <> "" Then
        With Sheets("Sheet1").Range("A:A")
            Set Rng = .Find(What:=TrimString, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlPart, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)

            If Not Rng Is Nothing Then
                Find_First = Rng.Value
                MsgBox ("Found at: " & Rng.Address)
            Else
                Find_First = "not found"
                MsgBox ("Not found ")
            End If
        End With
    End If

End Function

Sub test()
    MsgBox Find_First(" lala   ")
End Sub

【问题讨论】:

您的代码被称为工作表函数对我来说很好。 你好,这很奇怪......这可能与我使用excel for mac 2014 version 14的事实有关吗? 是否有任何可能出错的设置?我应该看什么方向?我在网上找不到任何有用的东西...谢谢! 由于您使用的是 mac,我认为您可以编辑您的问题并添加“osx”标签或其他适合吸引专家的标签。 【参考方案1】:

问题已解决... :) 问题是 find 方法在 Office excel 2011 for MAC 上无法正常工作。 请参阅此链接以了解 Rick Rothstein 发布的解决方法: http://www.mrexcel.com/forum/excel-questions/878953-excel-visual-basic-applications-function-works-code-but-not-udf-spreadsheet.html

【讨论】:

以上是关于函数在代码中工作,但不能作为工作表中的 UDF的主要内容,如果未能解决你的问题,请参考以下文章

工作线程如何在Nodejs中工作?

带有 JSP 的 Spring Boot 应用程序不能作为独立的 jar 工作,但可以在 IntelliJ 中工作

为啥以下 jquery 可以在 jsfiddle 中工作,但不能在任何浏览器上工作? [关闭]

为啥此查询可以在 Android Studio 中的 App Inspection 的 Database Inspector 部分工作,但不能在 Room Query 中工作?

MQTT 连接在 Node 中工作,但不能作为 ReactJS 组件

使用用户定义函数作为临时表中的约束