我尝试在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:需要对象”
将用户指定的范围转移到过程
告诉我如何处理这个问题?
答案 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