Как объявить тип, который не является переменным - PullRequest
0 голосов
/ 31 января 2019

Как объявить тип, чьи объявленные дети я могу назвать по имени?

Что-то вроде этого:

delphi:

TSuit = (Hearts, Diamonds, Clubs, Spades)

Я хочу объявить списокэлементы, им не нужно содержать значение, которое я могу вызвать во время написания кода, чтобы сделать код более читабельным и более легким для изменения.

Я пробовал это, но не могу понять, как это сделать:

объявление:

Public Enum EType
    square = 0
    triangle = 1
    circle = 2
End Enum

Public Sub LOK(line As Byte, SlType As EType)
    MsgBox ("test")
End Sub

вызов:

LOK(1, square)

Возможно ли это даже в VBA?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

circle представляется зарезервированным ключевым словом и не может быть использовано.Если вы измените его на что-то другое, например eCircle, все будет работать так, как задумано.

Option Explicit

Public Enum EType
    eSquare = 0
    eTriangle = 1
    eCircle = 2
End Enum

Public Sub LOK(line As Byte, SlType As EType)
    MsgBox "test: " & SlType
End Sub

Sub test()
    LOK 1, eSquare
    LOK 1, eTriangle
    LOK 1, eCircle
End Sub
0 голосов
/ 31 января 2019

Выполнить TestMe, и должно появиться окно сообщения:

Public Enum EType
    square = 1
    triangle = 2
    kolelo = 3
End Enum

Public Sub LOK(line As Byte, SlType As EType)
    MsgBox ("test")
End Sub

Sub TestMe()
    LOK 1, square
End Sub

Однако, если вы пытаетесь получить слово за перечислением, например, напишите «квадрат», «треугольник» или «колло»(кружок - зарезервированное слово), тогда нет простого способа сделать это.

Чтобы обойти эту проблему, взгляните на решения здесь - Есть ли способ получить перечисления в VBA?

...