【发布时间】:2020-06-27 03:33:12
【问题描述】:
多年来,我使用多种语言/数据库进行了编程,但对 VBA 完全陌生。好的,实际上我已经深陷其中并且正在苦苦挣扎。
我正在尝试编写一些代码,这些代码将从工作表中的单元格中获取一些 RGB 值,并将另一个范围(多个区域)的单元格背景格式化为该颜色 - 作为奖励,将文本格式化为白色如果颜色很深。有多组价值观,影响不同的领域。许多单元格都有选择颜色的菜单,最终我希望在那里进行任何更改以自动触发相关单元格的格式设置。 如果您想知道,我们正在尝试从公司通讯允许使用的列表中选择一组颜色用于技术报告中。所以有一个网格,我们可以从侧面看到所有的组合,并弄清楚我们是否可以区分它们——完全视力的人,以及我们这些有颜色缺陷的人。显然,对于我们尝试的每个新组合,必须手动更改单元格颜色是正确的 PITA。
最终的计划将是调用几个外部例程之一来设置范围,或者传递一个变量以在 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:Application-defined or object-defined error”
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"))
给出“编译错误:预期 =”(我试过带括号和不带括号)
有人可以给我一些指示我在这里出错的地方吗?
【问题讨论】:
-
谢谢 - 它看起来很有趣。不幸的是,我们的系统比鸭子的背部锁定得更紧,因此能够安装它的可能性为零:-(