如何将自定义的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。