Pertanyaan Bagaimana mengatur berbagai warna menggunakan vba?


Saya ingin mengatur Array warna menggunakan VBA.
itu tidak sesederhana yang saya kira.

menggunakan Vb.NET Anda dapat mendeklarasikan susunan warna seperti itu:

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

jadi saya mencoba sesuatu similer di VBA (dan tidak begitu terkejut bahwa kesalahan kompilasi dilempar, saya bertanya-tanya apa tipe data vbYellow(Enum?)):

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 

Terima kasih.


4
2018-02-16 18:14


asal


Jawaban:


vbYellow mengembalikan nilai numerik, jadi Anda perlu mendefinisikan variabel Anda sebagai Long. Jadi, tidak perlu Set itu sebelumnya.

Anda bisa menggunakan pendekatan langsung, dengan ar(0) = vbYellow (Anda tidak membutuhkan a,bandvariabel c` sebagai "perantara").

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

7
2018-02-16 18:21



Di VBA / VB6 yang Object jenis dicadangkan untuk variabel yang memegang referensi objek. Tidak seperti di .NET, tidak semuanya adalah obyek - sehingga Anda tidak dapat menetapkan enum konstan (bernama Long integer, pada dasarnya) ke referensi objek.

Sebaliknya Anda menggunakan Variant ketik, dan Anda bisa menyejajarkan deklarasi array dengan Array fungsi:

Dim colors As Variant
colors = Array(vbRed, vbGreen, vbBlue, vbYellow)

Juga di VB.NET ini:

Dim a, b, c As Object

Mendeklarasikan 3 Object variabel.

Namun dalam VBA / VB6, itu menyatakan c sebagai Object, dan pergi a dan b sebagai implisit Variant variabel: Anda akan ingin menghindari beberapa deklarasi pada baris yang sama.


6
2018-02-16 18:22



Untuk VBA Anda dapat menggunakan fungsi ini (saya membuatnya dan berhasil digunakan dalam beberapa proyek)

  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

Semua yang terbaik!


1
2018-02-17 13:27