【问题标题】:(VBA) dynamic use of embedded excel functions(VBA) 动态使用内嵌的excel函数
【发布时间】:2016-10-05 19:04:09
【问题描述】:

我正在尝试对数据进行后处理。我也得到了有小时分钟和秒的列。使用 VBA,我创建了一个循环来遍历 for 循环中的每一行。

For i = 2 To Max
Range("GE" & CStr(i + Offset)).Formula = "=TIME(AK & CStr(i + Offset);AL & CStr(i + Offset);AM & CStr(i + Offset))"
Next i

运行时错误1004:应用程序定义或对象定义错误。

我们如何编辑它以使其正常工作?

【问题讨论】:

  • 你有什么问题?
  • David 'mArm' Ansermot 对此进行了编辑。嗯,它不起作用,我无法解决问题

标签: excel vba dynamic formula


【解决方案1】:
For i = 2 To Max
    Range("GE" & CStr(i + Offset)).Formula = "=TIME(AK" & CStr(i + Offset) & ",AL" & CStr(i + Offset) & ",AM" & CStr(i + Offset) & ")"
Next i

循环变量必须位于您作为公式输入的字符串“外部”,才能正确构建。

这修正了代码中的拼写错误,但您应该考虑专门为工作表设置范围。

我还将您的分号更改为逗号,因为这是 TIME 函数在 Excel 中的工作方式,但如果您的设置不同,您可能需要恢复它。

【讨论】:

  • 非常感谢,这工作正常。之前也尝试过,但不知何故被所有的“弄糊涂了。但是,你的意思是“......专门为工作表设置范围。 “?
  • 您的代码默认选择活动工作表的范围,因为您没有指定一个;假设您希望它针对 sheet1 运行;如果您在运行代码时选择了 Sheet2,它将改为针对该工作表运行。这可以通过将变量声明为工作表并将其添加到 Range (Dim ws As Worksheet : Set ws = Thisworkbook.Worksheets("Sheetnamehere") 然后引用 ws.Range 而不仅仅是 Range 来避免
  • 啊好吧。是的,我这样做了,代码只是一个 sn-p 并简化为我的问题。但是再次感谢你;)
猜你喜欢
  • 2013-11-19
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多