【发布时间】:2021-12-24 06:46:45
【问题描述】:
我正在尝试让我的函数更改调用该函数的单元格的单元格颜色。我在this question 上找到了一些好的建议,但我遇到了#VALUE!以下代码出错(函数的其余部分按预期工作,省略此代码)。
main函数内部:
Dim checkCounter As Long
checkCounter = 0
当某些 if 语句被执行时,checkCounter = checkCounter + 1.
也在主函数内部:
If checkCounter <> 0 Then
With Application.Caller
.Parent.Evaluate "Changeit(" & .Address(False, False) & ")"
End With
'Else (would like to get this working as well)
With Application.Caller
.Parent.Evaluate "Clearit(" & .Address(False, False) & ")"
End With'
End If
ChangeIt 子:
Sub ChangeIt(cl as Range)
cl.Interior.ColorIndex = 22
'cl.Font.ColorIndex = 9 (would like this to function as well)'
End Sub
(潜在的)ClearIt Sub:
'Sub ClearIt(cl as Range)
cl.Interior.ColorIndex = 0
cl.Font.ColorIndex = 1
End Sub'
如果我编辑先例单元格(用于函数参数),将应用填充颜色,但 #VALUE!错误仍然存在。有什么办法解决这个问题?
附带问题:当子是 ClearIt 时,为什么/应该 .Parent.Evaluate "Clearit(" & .Address(False, False) & ")" 与 Clearit 一起工作?
【问题讨论】:
-
如果您的主函数返回#VALUE,那么发布该函数的完整代码(或重现问题的最小函数)会很有用。对于最后一个问题 - VBA 不区分大小写。
-
字体颜色仅供参考 - 我认为这是您可以直接从 UDF 执行的一件事。
标签: excel vba valueerror