如何将自定义的VBAmacros放在特定的Excel单元格中?
我有一个自定义的VBA函数调用
插值(作为范围运行)为双
将其添加到公式栏,并针对任何给定范围的数据进行调用,例如
=内插(B2:N 2)
现在,我想以编程的方式(在VBA中)把这个函数放到一些单元格中,所以它会自动计算在这个macros单元格左边的范围的插值。 在我的VBA代码中,我试图以下面的方式来做到这一点:
单元格(行,列).Formula =“=插值(B2:N2)”
它的工作原理,但是,我希望范围是dynamic的,即我不知道有多less列将在macros启用细胞的左侧。 函数Interpolate()可以处理任意数量的参数(它可以在任何N维空间中插值)。 所以,我需要dynamic地构造Interpolate()函数的Range参数,如下所示:
Private Function ColumnLetter(ColumnNumber As Long) As String Dim n As Long Dim c As Byte Dim s As String n = ColumnNumber Do c = ((n - 1) Mod 26) s = Chr(c + 65) & s n = (n - c) \ 26 Loop While n > 0 ColumnLetter = s End Function Dim t1, t2, t3, t4, arg As String t1 = "A" t2 = t1 & CStr(row) t3 = ColumnLetter(column - 1) t4 = t3 & CStr(row) arg = t2 & ":" & t4 Cells(row, column).Formula = "=Interpolate(arg)"
但是这不起作用。 它只在arg被明确和静态地指定时才起作用。
那么该怎么办?
我不知道你是否复制和粘贴你的代码,但目前的公式会显示为:
=插值(ARG)
将其更改为:
"=Interpolate(" & arg & ")"
你应该很好走。
基本上,发生的事情是你的公式string中没有评估arg。 您需要将其展开如下:
Cells(row, column).Formula = "=Interpolate(" + arg + ")"
引号内的任何内容都被解释为静态string。