如何使用vba设置颜色数组?
我希望使用VBA设置颜色数组。如何使用vba设置颜色数组?,vba,vb6,Vba,Vb6,我希望使用VBA设置颜色数组。 这并不像我想象的那么简单 使用Vb.NET可以声明如下颜色数组: Dim ar() As Color = {Color.Yellow, Color.Red, Color.Green} 因此,我在VBA中尝试了一些类似的方法(对于抛出编译错误并不感到惊讶,我想知道什么数据类型是vbYellow(Enum?): 谢谢。vbYellow返回一个数值,因此需要将变量定义为Long。因此,无需在之前设置它 您可以使用直接方法,使用ar(0)=vbYellow(您不需要a
这并不像我想象的那么简单 使用
Vb.NET
可以声明如下颜色数组:
Dim ar() As Color = {Color.Yellow, Color.Red, Color.Green}
因此,我在VBA中尝试了一些类似的方法(对于抛出编译错误并不感到惊讶,我想知道什么数据类型是vbYellow
(Enum
?):
谢谢。
vbYellow
返回一个数值,因此需要将变量定义为Long
。因此,无需在之前设置它
您可以使用直接方法,使用ar(0)=vbYellow
(您不需要a、
b和
c`变量作为“中间人”)
在VBA/VB6中,
对象
类型为保存对象引用的变量保留。与.NET不同,并非所有内容都是对象——因此不能将枚举常量(基本上是命名的Long
整数)分配给对象引用
相反,您可以使用变量
类型,并且可以使用数组
函数内联数组声明:
Dim colors As Variant
colors = Array(vbRed, vbGreen, vbBlue, vbYellow)
此外,在VB.NET中:
Dim a, b, c As Object
声明3个对象
变量
然而,在VBA/VB6中,它将
c
声明为对象,并将a
和b
保留为隐式变量:您希望避免在同一行上进行多个声明。对于VBA,您可以使用此函数(我制作了它,并成功地在多个项目中使用)
祝你一切顺利 thx,所以颜色不是vba中的对象…内部。例如,颜色需要一个长的int值…@jonathana是的,它也需要长的@jonathana我很乐意!请注意,我的VBE加载项及其代码检查涵盖了许多VBA问题(如隐式变量类型)。我知道这些评论旨在为讨论增加额外价值,但我必须说,您的Rubberduck项目令人印象深刻@乔纳塔娜,谢谢!请随时在GitHub上为我们主演!=)通常,您可以右键单击VB6 IDE中的任何标识符,选择“转到定义”,它将显示其数据类型等。这将清楚地表明vbYellow只是一个数字代码(长)而不是对象类型。谢谢,我尝试在IDE中找到类似的内容
Dim colors As Variant
colors = Array(vbRed, vbGreen, vbBlue, vbYellow)
Dim a, b, c As Object
Function GetColorFromColrName(ColrName As String) As Long
Dim rgbc As Long
Select Case ColrName
Case "red"
rgbc = RGB(255, 0, 0)
Case "brown"
rgbc = RGB(165, 42, 42)
Case "coral"
rgbc = RGB(255, 127, 80)
Case "orange red"
rgbc = RGB(255, 69, 0)
Case "orange"
rgbc = RGB(255, 165, 0)
Case "gold"
rgbc = RGB(255, 215, 0)
Case "yellow"
rgbc = RGB(255, 255, 0)
Case "yellow green"
rgbc = RGB(154, 205, 50)
Case "lawn green"
rgbc = RGB(124, 252, 0)
Case "green"
rgbc = RGB(0, 128, 0)
Case "lime"
rgbc = RGB(0, 255, 0)
Case "aqua"
rgbc = RGB(0, 255, 255)
Case "blue"
rgbc = RGB(0, 0, 255)
Case "blue violet"
rgbc = RGB(138, 43, 226)
Case "dodgerblue"
rgbc = RGB(30, 144, 255)
Case "dark magenta"
rgbc = RGB(139, 0, 139)
Case "dark violet"
rgbc = RGB(148, 0, 211)
Case "purple"
rgbc = RGB(128, 0, 128)
Case "magenta"
rgbc = RGB(255, 0, 255)
Case "chocolate"
rgbc = RGB(210, 105, 30)
Case "black"
rgbc = RGB(0, 0, 0)
Case "dim gray"
rgbc = RGB(105, 105, 105)
Case "gray"
rgbc = RGB(188, 188, 188)
Case "silver"
rgbc = RGB(192, 192, 192)
Case "white"
rgbc = RGB(255, 255, 255)
Case ""
End Select
GetColorFromColrName = rgbc
End Function