Tag: 用户定义的函数

函数调用另一个函数,但得到“卡住”

我是偶尔的VBA程序员,为了好玩(不是我的工作)。 我在MS Excel 2010中有一系列的VBA模块。不知道我做错了什么。 这个例程工作,然后我改变了一些东西,它停止工作。 我做的一件事就是将代码从单个函数分成两个模块。 我认为在我把它分成两部分之后,它工作了一段时间,但是现在我不记得这是否是真的,因为我已经尝试了很多东西来使它重新工作。 幸运的是,我将所有代码的旧版本保存在一个函数中,并且仍然有效。 它将大数组返回到电子表格。 基本上,我有一个工作表,调用一个函数。 该函数调用另一个函数。 使用debugging – 切换断点结合一些MsgBox调用,我发现第一个函数运行到它调用第二个函数的点。 然后第二个函数运行到“End Function”命令。 在那个时候,工作表顶部的名字闪烁了几次……而什么也没有。 在debugging时,程序似乎没有返回到第一个函数。 应该在第一个函数中填充的数组用#Value填充。 我读了几个VBA可能被破坏的地方,closures所有东西并重新启动可以修复它。 它没有。 然后我读到,如果您将所有内容复制/粘贴到一个新的工作表,新的模块(是的,很多的复制/粘贴),可以清理它。 它没有。 我还读到了一个问题,即当维度是函数的inputvariables时,维度数组有问题。 所以我初始化了用于设置数组维度的variables,即使它们是函数的inputvariables。 也许这是一个问题? 代码很长,所以我只包含了对第二个函数的调用,第二个函数中的variables声明以及其他一些事情。 当我传递variables的时候,可能我搞砸了一些语法? 第一个function: Option Explicit 'forces all variables to be explicitly declared Function InputOutputDVL(InData As Variant) '——————————————————————————————— Dim g, p, ng, np, ns, ID, count As Integer Dim ngmax, […]

部署Excel UDF

我有一个调用Web服务的Excel UDF。 UDF代码是一个自动化插件代码,它是一个C#类库,我为它创build了一个安装程序。 当我运行这个设置时,在toos – > addins – > excel的自动化插件列表中不会出现对特定插件代码的引用,并且这个函数不会在编辑栏中出现。 我正在使用VS 2008和Excel 2003。 我在这里错过了什么? 我应该定义Excel的path,以从中select一些东西,使其指向从udf代码生成的DLL? 还是有什么安全问题需要照顾? 客户端计算机的安全级别设置为“完全信任”,但插件未出现在列表中。 我在这里错过了什么?

在UDF的单元格公式中使用内置枚举

我有一个用户定义的函数,它需要一个具有关联内置enum的参数: Public Function bgrcolor_cells(rng As Range, xlcl As Long) As Integer 我想在单元格中写出这样的公式 =bgrcolor_cells($A2:$B2,vbRed) 代替 =bgrcolor_cells($A2:$B2,255) 那可能吗? 怎么样? PS:我发现如何在Excel UDF中使用枚举标识符 ,但它引用了用户定义的枚举。 我不知道我是否想要使用内build的枚举实际上有所作为。 编辑1也许一些自动阅读内置枚举定义的代码可能有助于定义由Jean-FrançoisCorbett或命名范围的类,然后将避免从头打字。 我已经看到了这样的自动parsing,可能的指针是: http://www.cpearson.com/excel/EnumNameList.aspx http://www.excelforum.com/excel-programming-vba-macros/356892-programmatic-generation-of-enum-to-string-functions.html 编辑2 (按照这个 )评论已经发布,指出“有没有区别的内置和用户定义的枚举”,这是一个骗局。 我认为这不是,而且如果引用的评论是正确的,那么对于当前的具体和不同的问题,这可能是答案的一部分(也许值得一提)。

查找所有填充了任何颜色的单元格,并在excel vba中突出显示相应的列标题

我的问题: 我制作了一个大的(2000行)macros,运行在我们公司的模板上,修复了一些常见问题,并突出显示了导入前的其他问题。 模板文件总是有150列,在大多数情况下是15000+行(有时甚至超过30000)。 macros运行良好,根据我们的数据规则突出显示所有包含错误的单元格,但是具有如此多列和行的文件我认为将代码段添加到我的macros中会很方便,已高亮的单元格,然后突出显示包含突出显示的单元格的列的列标题。 我在search解决scheme时发现的方法: SpecialCells xlCellTypeAllFormatConditions只适用于条件格式,所以这不是我的情况似是而非的方法 Rick Rothstein的UDF来自这里 Sub FindYellowCells() Dim YellowCell As Range, FirstAddress As String Const IndicatorColumn As String = "AK" Columns(IndicatorColumn).ClearContents ' The next code line sets the search for Yellow color… the next line after it (commented out) searches ' for the ColorIndex 6 (which is usually yellow), so use […]

Excel中的VBA公共用户定义函数

我已经创build了以下function: Option Explicit Public Function fyi(x As Double, f As String) As String Application.Volatile Dim data As Double Dim post(5) post(1) = "Ribu " post(2) = "Juta " post(3) = "Milyar " post(4) = "Trilyun " post(5) = "Ribu Trilyun " Dim part As String Dim text As String Dim cond As Boolean Dim i […]

在执行CalculateFullRebuild时调用未使用的UDF

我在Excel书中有一些用户定义的函数。 我用了一段时间,但过了一段时间,我从单元中删除了对这些函数的调用,因为我find了一个更好的方法来完成相同的任务(我没有在VBA编辑器中删除函数定义本身)。 所以,这些函数不再被书中和任何VBA代码调用,我使用search来检查它是100%确定的。 现在我正在对代码进行一些审查,并且发现了一些奇怪的事情:在同一工作簿(与这些函数无关)的Sub过程中,我调用了Application.CalculateFullRebuild 。 发生这种情况时,这些UDF被调用,我可以通过在UDF中设置一个中断点来看到它。 我想知道为什么会发生这种情况,为避免这种情况可以采取什么措施,因为这会不必要地减慢Sub的速度。 谢谢!

Excel条件格式可以在条件中使用UDF吗?

我在Excel中有一个单元格,我想根据用户定义的公式(UDF)进行不同的格式化 – 我的公式testing单元格中是否有公式… 我正在尝试使用条件格式与我的UDF格式化单元格 – 但它似乎并没有工作。 我的情况是这样的: ="isManualPrice(R22C12)" 我尝试没有引号,但得到错误 条件格式条件不能使用对其他工作表或工作簿的引用 也许这个问题涉及到我的UDF被定义在一个单独的macros观工作簿,而不是我的主要工作簿… 我从2005年的这篇博客中看到了它的提法, 提前致谢。 克里斯

使用IF或Select Case的Excel UDF具有更好的性能

我经常需要在Excel中search单元格中某些特殊文本的公式。 我需要search的行数是100.000到500.000,在罕见的情况下高达1.000.000。 为了避免长公式,我写了一个自己的UDF来search单元格中的多个文本string。 新的公式很难处理。 我尽可能优化这个公式的运行时间。 500.000行需要11到12秒。 我用两种方法做了这个公式:一个使用IF语句(SuchenSIF),另一个(SuchenSSELCASE)使用SELECT CASE语句。 展位公式具有相同的速度。 你能给我一些提示如何获得更好的performance吗? 这个公式的语法是: SuchenSIF(细胞search,文本search1,…文本search6) SuchenSSELCASE(单元格search,文本search1,…文本search6) Public Function SuchenSIF(Zelle As Range, such1 As String, Optional such2 As String, Optional such3 As String, Optional such4 As String, Optional such5 As String, Optional such6 As String) As Integer Application.Volatile ' this code, based on IF-statements need 11-12 seconds for 500.000 […]

在Excel单元格中返回用户定义的数据types

我search了networking,我已经在这里search了stackoverflow的问题,但我一直没有find解决办法。 这是我想要做的: 假设我在名为“MyClass”的类模块中有以下代码 Option Explicit Dim var1 as integer Sub初始化(v为整数)var1 = v End Sub 函数GetVar1()GetVar1 = var1结束函数 然后我有一个单独的模块中的代码的UDF Function InitializeMyClass(v as integer) as MyClass Dim myvar as MyClass Set myvar = new MyClass Call myvar.Initialize(v) Set InitializeMyClass = myvar End Function Function InitializeMyClass(v as integer) as MyClass Dim myvar as MyClass Set myvar = new […]

如何使用产品公式在Excel UDF中汇总回报

我试图把下面的公式放到一个UDF中,这样我可以累计每月收益。 在Excel中,公式必须被识别为一个数组,所以当我input时,按下Ctrl + Shift + Enter可以得到公式周围的{}括号。 有谁知道如何做到这一点? 我想只能inputreturns_calc()并select适合下面的返回variables的范围。 {=(PRODUCT(1+returns/100)-1)*100}