Tag: 用户定义的函数

VBA:testing完美的立方体

我想在VBA中编写一个简单的函数,它将testing一个真实的值,并输出一个string结果,如果它是一个完美的立方体。 这是我的代码: Function PerfectCubeTest(x as Double) If (x) ^ (1 / 3) = Int(x) Then PerfectCubeTest = "Perfect" Else PerfectCubeTest = "Flawed" End If End Function 正如你所看到的,我使用一个简单的if语句来testing一个值的立方根是否等于它的整数部分(即没有余数)。 我尝试用一​​些完美的立方体(1,8,27,64,125)testing函数,但它只适用于数字1.任何其他值吐出“有缺陷”的情况。 任何想法这里有什么问题?

Excel VBA中的数组函数

我有一个函数在VBA中生成一个string数组。 从另一个VBA函数调用时,它工作正常,但从工作表中调用时没有问题。 以下是应该如何使用它: selectA1:A3 在公式栏中input=Test() ,然后Ctrl-Shift-Enter使其成为一个数组函数 A1应该包含A ,A2应该包含B ,而A3应该包含C 当我真正尝试这个时,它将A放在数组的所有三个单元格中。 我怎样才能得到Test返回到数组的不同单元格的数据? 对于那些想看到它的人来说,这里是函数的代码。 请记住,从其他函数调用时,该函数可以正常工作。 Function Test() As String() Dim a(1 To 3) As String a(1) = "A" a(2) = "B" a(3) = "C" Test = a End Function

用户定义的函数不重新计算

我最近拿了一个大的,稳定的XLSM文件,并拆分成一个XLAM和XLSX。 XLSX调用(udfs)中的成千上万个单元格在XLAM中起作用,并且每个这样的udf都以“Application.Volatile”语句开头(矫枉过正,强制重新计算)。 XLSX不会使用F9通过Ctrl-Alt-Shift F9进行重新计算,也不会通过Application.CalculateFull与Cell.Calculate进行重新计算。 XLSX单元格只是“死”…但是,如果我点击F2来编辑公式,然后按ENTER键,我可以一个接一个地重新唤醒它们。 以这种方式重新唤醒的细胞似乎保持清醒,并在此后正常重新计算。 有没有人遇到这种奇怪的行为,有没有任何其他的方法来强制Excel重新构buildcalc图,我应该尝试从头开始? 另外一个注意事项是:我通过文件打开打开了XLAM和XLSX,并没有使用File … Options … Addinspath安装XLAM,因为在过去当我这样做的时候,你“取消”并安装XLAM,然后所有的UDF引用被完整的path名链接所取代 – 非常难看。 或者,如果有人可以概述一个解决方法来安装XLAM插件,不会在任何地方创build破碎的链接,我会去那里。

Excel UDF加权RANDBETWEEN()

那么不是真的RANDBETWEEN() 。 我试图创build一个UDF来返回一个数组中的数字的索引,其中数字越大,被选中的可能性就越大。 我知道如何将概率分配给工作表中的随机数(例如,在概率总和上使用MATCH() ,所以在这里解释了很多东西),但是我想要一个UDF,因为我将一个特殊的input数组该function – 不只是一个选定的范围。 我的问题是,权重是closures的,数组中的数字比数组中的更早被返回,我不能看到我的代码中哪里出了错。 到目前为止,这是UDF: Public Function PROBABLE(ParamArray inputArray() As Variant) As Long 'Takes a set of relative or absolute probabilities and ranks a random number within them Application.Volatile (True) Dim outputArray() As Variant Dim scalar As Single Dim rankNum As Single Dim runningTot As Single ''''' 'Here I take inputArray() […]

在Excel VBA中创build一个自定义工作表函数

我有一个微弱的记忆,可以使用VBA函数来计算Excel中的值,就像这样(作为单元格公式): =MyCustomFunction(A3) 可以这样做吗? 编辑: 这是我的VBA函数签名: Public Function MyCustomFunction(str As String) As String 该函数位于ThisWorkbook模块中。 如果我尝试在工作表中使用它,如上所示,我得到#NAME? 错误。 解决scheme(谢谢,codeape):定义ThisWorkbook模块时,该function是不可访问的。 它必须位于“正确”模块中,该模块已手动添加到工作簿中。

将用户定义的函数添加到Visual Studio Excel加载项

在Visual Studio中,我有一个Excel 2010加载项目。 我怎样才能有这个项目创build以下模块: 我知道我可以用该模块保存该工作簿,然后将其与我的插件一起使用。如果我可以让我的插件创build该模块,那将是非常好的…

Excel正在计算一个带有VBA函数的公式作为错误,除非它被重新input

我有一个简单的if语句在工作表中设置if条件是VBA用户定义函数: Function CellIsFormula(ByRef rng) CellIsFormula = rng(1).HasFormula End Function 这个function似乎工作正常: 但由于某种原因,我不明白,单元格正在评估一个错误。 更糟糕的是,在评估公式时,excel将错误归因于不会产生错误的计算步骤: 最重要的是,如果我简单地重新input公式,或强制重新计算( Ctrl + Alt + F9 ),那么这个公式没有问题! 我已经尝试通过将Application.Volatile添加到函数代码中来使公式volatile,但是它没有改变任何东西。 其他方法刷新计算,如设置计算手动,然后回到自动,隐藏“重新计算表”,或者只是使用F9或Ctrl + F9不起作用,只有重新input公式或Ctrl + Alt + F9将导致函数重新正确计算。 更改if语句中引用的单元格之一不会解决问题, 但更改由“CellIsFormula”函数引用的单元格确实解决了该问题。 每次单张被重新打开,但错误又回来了。

Excel VBA中的函数重载和UDF

我使用Excel VBA编写UDF。 我想用几个不同的版本来重载我自己的UDF,以便不同的参数可以调用不同的函数。 由于VBA似乎不支持这一点,任何人都可以提出一个好的,非杂乱的方式来实现相同的目标? 我应该使用可选参数还是有更好的方法?