【发布时间】:2021-10-31 02:00:36
【问题描述】:
我一直在 Excel(Office 365 版本)中构建团队假期日历,并且我第一次使用 VBA 来自动执行一些计算和样式设置。
我一直坚持以下几点:
我想创建一个改变单元格背景颜色的函数。 我有四种颜色可以切换,所以我宁愿做四种功能,每种颜色一种。 然后在需要时在不同的函数中调用该函数。 我不想使用 ColorIndex,而是使用自定义颜色(我可以使用 RGB 或 Long 值),但我也无法使用 ColorIndex。
我的假设是问题出在范围上,但在这一点上,谁知道:D。
每种颜色的长值都存储在自制的枚举“OwnColorLong”中。
这是我的一些尝试,每次我的 Excel 工作表中的结果(作为公式运行时)都是“#Value!”。
'Function SetBackgroundToRed(RangeToChange As Range)
' Dim ColorIWant As Long
' ColorIWant = OwnColorLong.Red
' RangeToChange.Interior.Color = ColorIWant
'End Function
'Sub SetColorToRed(RangeToChange As Range)
' RangeToChange.Select
' With Selection.Interior
' .ColorIndex = 3
' End With
'End Sub
'
Function SetBackgroundToRed(RangeToChange As Range)
Dim MyRange As Range
Set MyRange = Worksheets("Vacation Calendar").Range("RangeToChange")
MyRange.Select
With Selection.Interior
.ColorIndex = 3
End With
End Function
对于何时使用 sub 或函数,或者何时最好使用类模块,我仍然有些困惑。现在所有代码都放在一个模块中,我将编写一个链接到按钮的 Main sub 并将所有代码放在那里,除了函数本身。如果有更好的做法,请随时告诉我。
【问题讨论】:
-
最好将其用作 Sub 并从按钮运行。
-
嗨 Ben,我不确定使用按钮是否是最好的方法,因为我想在不同的功能中使用这些功能。颜色变化只是我计划编写的代码的一小部分。例如,我将在 IF 语句中使用它。我在工作表中制作了一个按钮,它应该运行所有计算并更新颜色以清晰起见。
-
不明白为什么按钮不起作用。不使用函数的参数也是没有意义的。
-
仍然让它成为一个子,因为它做了一些事情并且不返回任何东西。
-
SJR,我怎么不使用函数的参数?这就是需要新颜色的单元格范围。我以为我选择了那个范围然后改变颜色,这可能是错误的 :) 我可以把它变成一个子,但我一直在尝试一切:p 第二个例子是一个子,这也不起作用。我会确保在最终版本中将其设为 sub :) 我无法将其设为按钮,因为我不会在工作表中使用此 sub,它将隐藏在不同的功能中。颜色变化不是我的代码的主要目标,尽管对于打开工作表的最终用户的快速查看很重要