2017-02-16 7 views
4

VBAを使って色の配列を設定したいと思います。
私はそれがそうであると思ったように単純ではありませんでした。vbaを使用して色の配列を設定する方法は?

Dim ar() As Color = {Color.Yellow, Color.Red, Color.Green} 

ので、私はデータ型がvbYellowEnumあるのだろうか、VBAでsimiler何かを試してみました(とコンパイルエラーがスローされたことをそれほど驚かなかった:あなたがそのような色の配列を宣言することができVb.NETを使用して

?)):

Private Sub CommandButton1_Click() 

Dim ar(3) As Object 
Dim a, b, c As Object 

Set a = vbYellow 
Set b = vbRed 
Set c = vbGreen 

ar(0) = a 
ar(1) = b 
ar(2) = c 

End Sub 

ありがとうございます。

+1

一般に、VB6 IDEの任意のIDを右クリックして「定義に移動」を選択すると、データタイプなどが表示されます。これはvbYellowが数値コード(長)オブジェクト型 – DaveInCaz

+0

ありがとう、私はIDEの – jonathana

答えて

7

vbYellowは数値を返すので、変数をLongと定義する必要があります。したがって、前にSetの必要はありません。

ar(0) = vbYellowで直接アプローチを使用することができます(a, b andの変数を「中間者」として使用する必要はありません)。 VBA/VB6で

Private Sub CommandButton1_Click() 

Dim ar(3) As Long 
Dim a As Long, b As Long, c As Long 

a = vbYellow 
b = vbRed 
c = vbGreen 

ar(0) = a 
ar(1) = b 
ar(2) = c 

End Sub 
+0

thxのようなものを見つけようとしたので、色はvbaのオブジェクトではありません...例えば、Interior.Colorは長いint値をとります... – jonathana

+0

@jonathanaはい、それはまた明確な説明のために 'ロング ' –

6

Objectタイプはオブジェクト参照を保持する変数のために予約されています。 .NETとは異なり、すべてがオブジェクトではないため、オブジェクト参照に列挙定数(基本的にはLongという名前)を割り当てることはできません。

代わりにあなたがVariantタイプを使用して、あなたがArray機能と配列の宣言をインライン化することができます

VB.NETでも
Dim colors As Variant 
colors = Array(vbRed, vbGreen, vbBlue, vbYellow) 

この:

Dim a, b, c As Object 

は3 Objectを宣言変数。あなたが同じ行に複数の宣言を避けたいでしょう:Objectとしてcを宣言し、暗黙のVariant変数としてabを残ししかし、VBA/VB6では、

。あなたはこの機能を使用することができVBAについて

+0

ありがとう@マットのマグカップがかかります。 – jonathana

+2

@jonathana私の喜び! VBEのアドイン[Rubberduck](http://rubberduckvba.com)とそのコード検査では、VBAの問題(変数の暗黙的な型指定など)が多数含まれていることに注意してください。 –

+1

私は、議論のための付加価値を加えることを意図したコメントを知っていますが、あなたのRubberduckプロジェクトは非常に印象的だと言わざるを得ない! – jonathana

1

(私はそれを作ったし、正常にいくつかのプロジェクトで使用)

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 

すべてのベスト!

関連する問題