在用户函数中指定.Interior.ColorIndex时出现VBA错误

时间:2019-12-21 15:19:56

标签: excel vba

我尝试在VBA中编写Excel 2010的程序,但错误不断发生

Public Sub SetClrIndex (rng as Range, ColorIndex as Integer)
    rng.Cells(1,1).Interior.ColorIndex = ColorIndex 'here "Error 1004: application or object error"
End Sub

如果在rng.Cells(1,1).Interior之前放置Set,则出现错误“错误424:需要对象”

将用户指定的范围转移到过程

告诉我如何处理这个问题?

2 个答案:

答案 0 :(得分:0)

这不是CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5463d48854bd docker.elastic.co/elasticsearch/elasticsearch:7.5.1 "/usr/local/bin/dock…" 17 seconds ago Up 16 seconds 9200/tcp, 0.0.0.0:9500->9500/tcp, 9300/tcp, 0.0.0.0:9600->9600/tcp loving_thompson 5897f09dfe2b elasticsearch:es "/docker-entrypoint.…" 2 months ago Up 9 days 0.0.0.0:9200->9200/tcp, 9300/tcp es 问题,而是.Interior.ColorIndex问题:它没有设置(它没有引用任何东西),只是被标注为“ Range”类型的对象。确保您正在传递给该子对象。

对此进行测试并避免出现错误的方法:

rng

编辑: @woojin提供了更多信息:“此过​​程是从用户定义的函数中调用的。。。” 对此进行了说明(贷记到@Rory):“您不能从菜单项中更改单元格的颜色。 UDF,甚至是间接的。”

答案 1 :(得分:0)

您还应该提供调用您的函数的代码,以便希望帮助的人有完整的了解。由于您没有提供,所以我编写了代码,这似乎很好用。也许您可以从此工作代码开始解决问题。

Option Explicit
Sub main()
Dim r As Range
Set r = Application.InputBox("select range", , , Type:=8)
MsgBox "the current ColorIndex is " & r.Interior.ColorIndex
SetClrIndex r, 0
End Sub


Public Sub SetClrIndex(rng As Range, ColorIndex As Integer)
    rng.Cells(1, 1).Interior.ColorIndex = ColorIndex 'works fine
End Sub