是否可以使用VBA将.Interior.ColorIndex
转换为颜色名称?
下面得到的只是获取颜色索引。我没有找到将其转换为颜色名称的方法。
代码:
Option Explicit
Sub test()
Dim Color As Variant
With ThisWorkbook.Worksheets("Sheet1").Range("A1")
Color = .Interior.ColorIndex
End With
End Sub
答案 0 :(得分:1)
这是VBA的常见要求。在其他语言中,此“获取枚举的名称”活动由称为反射的服务提供。不幸的是,VBA不能提供开箱即用的反射,因此在VBA中,对于许多事情,我们必须设置样板类来为我们完成工作。将下面的代码作为名为“ ColoursEnum”的类粘贴到VBA中
该类还是单实例类的一个示例,在该实例中,我们有意覆盖了VBA默认值,并允许为我们声明该类的单个实例(即,我们不必执行“ New ColoursEnum” >
此枚举可对枚举的迭代进行可靠的处理。如果long值的范围不连续,则使用普通的VBA枚举可能会遇到不存在的枚举数的问题。对于ColoursEnum,我们将Items作为变体数组获得,因此可以在数组上进行迭代,而不必担心它们是不连续的范围。
该类还通过允许文本显示是否存在键或值来扩展Scripting.dictionary中的“存在”的概念。不必将NOT放在Exists的前面,这样可以使代码更具可读性(例如,“ LacksKey(key)”而不是“ Not Exists(key)”
将这个答案汇总在一起,我深深感谢RubberDuck团队撰写的出色的VBA文章。
尽管默认情况下为我们创建了该类,但我们仍然需要初始化它使用的字典,所以我们必须这样做
<li><a href="#" onclick="shareOnFacebook(1)" ><i class="fa fa-facebook"></i></a></li>
在实际使用字典之前。
此外,因为我们有一个Class而不是一个模块,所以我们可以设置一个引用
ColoursEnum.Setup
================================================ ==========
set my_colours = ColoursEnum
.....
if my_colours.LacksItem("Red") then etc....