我试图从工作表中的单元格中提取RGB值,并将另一个范围(多个区域)的单元格背景格式化为该颜色-作为奖励,如果颜色较暗,则将文本格式化为白色。
有多组值,影响不同的区域。一些单元格有菜单来选择颜色,最终我希望任何变化都能自动触发相关单元格的格式设置。
我正试着从公司通讯允许使用的颜色列表中挑选一组颜色用于技术报告。有一个网格,我们可以看到所有的组合,并找出我们是否可以区分它们-无论是视力正常的人,还是我们这些有颜色缺陷的人。
最终的计划将是调用几个外部例程中的一个来设置范围,或者传递一个变量以在case语句中使用。
这是可行的:
DestColor = RGB(Range("d4"), Range("e4"), Range("f4"))
Sheets("Main").Range("$B$5:$P$5,$B$4,$I$2,$I$4,$I$6,$I$8,$I$10,$I$12,$I$14,$I$16,$I$18").Interior.Color = DestColor
字符串
这给
1004:应用程序定义或对象定义错误
Set DestCells = Sheets("Main").Range("$B$5:$P$5,$B$4,$I$2,$I$4,$I$6,$I$8,$I$10,$I$12,$I$14,$I$16,$I$18")
DestColor = RGB(Range("d4"), Range("e4"), Range("f4"))
Sheets("Main").Range(DestCells).Interior.Color = DestColour
型
我创建了一个名为DestCells
的Range类型的对象,所以我应该能够在任何使用Range(...)
的地方使用它。
是我误解了什么,还是我的语法有问题?
最终,我将寻找这样的一个子:
Sub SetCells(DestCells As Range, ColorVals As Range)
vRed = ColorVals.Columns(1)
vGreen = ColorVals.Columns(2)
vBlue = ColorVals.Columns(3)
' some more stuff to go in here ...
End Sub
型
但试着把它叫做(并简化测试范围):
SetCells(Sheets("Main").Range("$B$5:$P$5"), Sheets("Main").Range("d4:f4"))
型
给
编译错误:预期=
我试过带括号和不带括号。
5条答案
按热度按时间j0pj023g1#
对于本部分:
字符串
这一行
Sheets("Main").Range(DestCells).Interior.Color = DestColour
DestCells
已经是一个范围,因此删除.Range()
。您已经引用了工作表,因此不需要Sheets("Main")
制作:
型
对于本部分:
型
()
on calls让它认为你正在返回一些东西,你想要:型
cclgggtu2#
字符串
应
型
其他几个问题:
1.一旦你设置了一个范围,你可以直接像上面那样引用它。
1.您可以删除所有锁定的单元格引用(
$
)。它们对您的代码没有任何帮助,同时降低了可读性1.你正在使用两种颜色的拼写(不是问题,只是有趣)
epggiuax3#
你可以通过阅读单元格内部填充ColorIndex(而不是Color)并将其与深色ColorIndex列表进行比较来处理字体颜色挑战。这里有一个函数和一些代码来测试.在运行测试子程序之前,只需选择一个具有不同单元格颜色的区域:
字符串
可能有一个更复杂的方法。如果黑色和白色是目标,这个方法很好用,但是直接推断“相反”的颜色会很方便。也许一些关于RGB值的简单数学。
kyxcudwk4#
下面是一个获取单元格RGB细节的程序.
字符串
ttvkxqim5#
谢谢大家-一个最友好和乐于助人的群体。所有的贡献都是有用的,但@Warcupine是理解我错在哪里的关键。现在整个事情都建立起来了-我发现一旦我越过了那个路障,它就相当容易了。再次感谢。