【问题标题】:VBA write excel function in a cell containing a defined variableVBA在包含已定义变量的单元格中编写excel函数
【发布时间】:2017-04-04 09:51:35
【问题描述】:

我是这个网站的新手,过去作为被动阅读器找到了很多解决方案,但现在我在 VBA 中遇到了一些问题。

所以,我想在特定单元格中用 excel 编写一个调用函数的公式(已经在我的代码中)。我希望它被写成一个公式,而不仅仅是一个结果。

我调用的函数是插值函数。

当我编写这段代码时,它可以工作:

ActiveSheet.Cells(2, 8).Formula = "=Interpolate(J11:J43,K11:K46,F3,FALSE)"

现在,我想把公式的一部分变成变量

ActiveSheet.Cells(2, 8).String = "=Interpolate(J11:J"&Lastrow1&",K11:K46,F3,FALSE)"

在我的代码Lastrow1 = 43 中是未定义的

我也试过了,没机会

ActiveSheet.Cells(2, 8).String = "=Interpolate(J11:J""&Lastrow1&"",K11:K46,F3,FALSE)"

或者这个:

ActiveSheet.Cells(2, 8).String = "=Interpolate(J11:J"""&Lastrow1&""",K11:K46,F3,FALSE)"

关于如何做到这一点的任何帮助?

我尝试使用这段代码

将 Lastrow1 变暗

Lastrow1 = 43

Worksheets("YourSheetName").Cells(2, 8).Formula = "=Interpolate(J11:J""&Lastrow1&"",K11:K46,F3,FALSE)"

它也不起作用,我有错误消息“应用程序定义或对象定义错误”。

【问题讨论】:

  • 澄清一下,您希望它在单元格中呈现为公式的文本,而不是结果?另外,您是否收到任何类型的错误消息?你的问题并不完全清楚。
  • 还显示您如何定义变量,因为这可能会产生重大影响。 (主要是本地与全球)
  • Dim lastrow1 As Long Lastrow1 = 43 Worksheets("YourSheetName").Cells(2, 8).Formula = "=Interpolate(J11:J""&Lastrow1&"",K11:K46,F3, FALSE)”返回“应用程序定义的或对象定义的错误”。

标签: excel vba function variables


【解决方案1】:

您需要使用Cells(2, 8).Formula

尽量远离ActiveSheet,改用合格版Worksheets("YourSheetName").Cells(2, 8).Formula...

尝试一小段代码来演示如何让它工作:

Sub FormulaLastRow()

Dim Lastrow1 As Long

Lastrow1 = 43  ' <-- just for tests  
Worksheets("TEST").Cells(2, 8).Formula = "=Interpolate(J11:J" & Lastrow1 & ",K11:K46,F3,FALSE)"    

End Sub

【讨论】:

  • 我试过你的代码也不起作用 Worksheets("YourSheetName").Cells(2, 8).Formula = "=Interpolate(J11:J""&Lastrow1&"",K11:K46, F3,FALSE)”返回“应用程序定义的或对象定义的错误”。删除双括号,我得到另一个错误 Worksheets("YourSheetName").Cells(2, 8).Formula = "=Interpolate(J11:J"&Lastrow1&",K11:K46,F3,FALSE)" 返回一个“语法错误"
  • @JeromeVBA 您需要将“YourSheetName”替换为您希望拥有这些公式的工作表名称。或者,你可以使用ActiveSheet,不推荐使用
  • 是的,这就是我所做的,我在这里替换了 YourSheetName 的插图。我也试过activesheet,没有机会。
  • @JeromeVBA 在下面写为评论,您正在使用的确切 2-3 行并收到错误
  • 好的,所以我的工作表名称是“TEST”,LastRow1=43 我的代码是:Dim Lastrow1 as Long Lastrow1 = 43 Worksheets("TEST").Cells(2, 8).Formula = " =Interpolate(J11:J""&Lastrow1&"",K11:K46,F3,FALSE)" error = "应用程序定义或对象定义错误"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多