【发布时间】:2020-01-26 18:04:12
【问题描述】:
我正在尝试构建一个函数,用作工作表中的固定参考点,以便能够在不改变 Hcom() 范围的创建函数中的值的情况下下拉公式: 1, 1, 1, !Hcom 进入 2, 2, 2, !Hcom 以此类推
如果用于第二个未修复的函数,我尝试将 rng 调暗为范围,我尝试编写 ThisCell 而不是 Thiscell,但 vba 会自动更正为 Thiscell。谷歌了一下。我尝试用 = 1 或 2 或 3 编写 If。我尝试过案例选择。
Function Hcom()
Dim rng as Range
Application.Volatile
Set rng = Application.Thiscell.Offset(0, 1)
Select Case rng
Case "SJUK", "VAB", "SEM.", "LEDIG", "RÖD D."
Hcom = Range("J7") / 5
Case Else
Hcom = ""
End Select
End Function
我希望它用 Offset(0,1) 引用自己,让它读取值列表。在找到我想要或不想要的值后,它应该等待单元格在工作表上更改吗? (第一次使用 Application.Volatile)而不是我得到#Value 以及当我从 VBA 运行时出现此错误
运行时错误“1004”: 对象'_Application'的方法'ThisCell'失败
调试后这一行被高亮显示
rng = Application.Thiscell.Offset(0, 1)
【问题讨论】:
-
您需要将一个变量传递给您的函数。
-
如果您在 VBA 中运行而不是作为 UDF 运行,则不能使用
Application.ThisCell。Range("J7")的值是多少? -
修复
Thiscell的大写 - 添加一个新行Dim ThisCell,然后立即删除它。 -
@urdearboy 谢谢!已修复,但我仍然需要输入一个单元格,是否可以在不输入 vba 之外的任何内容的情况下引用公式所在的单元格?
-
Range("J7")的值是多少?Hcom应该在尝试除以 5 之前测试它是否是一个数字。