Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用vba设置颜色数组?_Vba_Vb6 - Fatal编程技术网

如何使用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

我希望使用VBA设置颜色数组。
这并不像我想象的那么简单

使用
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