2013-12-11 5 views
2

Я хотел бы определить пользовательский тип данных в VBA и присвоить значение по умолчанию атрибуту.Пользовательские типы данных VBA - по умолчанию

пример:

Public Type Fruit 
    Name as String 
    Color as String 
    Amount as Integer 'Default 12 
End Type 

Public Sub UseFruit 
    Dim Banana as Fruit 
    Banana.Name = "Banana" 
    Banana.Color = "Yellow" 
    Debug.Print Banana.Amount 
End Sub 

Я хотел бы последняя строка в суб для печати 12; то есть. если я умру фруктом, сумма по умолчанию равна дюжине, если не укажу иначе.

Как это можно сделать? Заранее спасибо!

+2

не может быть, что вы хотите (и ответ Blackhawk является хорошим подходом), но вы могли бы вместо того, чтобы использовать простой класс и установить по умолчанию в 'Initialize' , –

+0

Я согласен с @TimWilliams класс Object, вероятно, будет лучшим подходом – engineersmnky

+0

Спасибо за подсказку, я пытался избежать объекта класса, поскольку я должен передать макрос людям, которые имеют довольно ограниченное знание VBA. Спасибо @Blackhawk, я думаю, что я буду использовать функцию вместо этого, чтобы установить значения по умолчанию, как вы рекомендовали. – user2704076

ответ

2

Если вы не хотите сделать его Const, лучший способ - создать функцию для создания «Фьючерса по умолчанию» для вас.

Просто, чтобы продемонстрировать Const, справедливо следующее, хотя, конечно, он не может быть изменен (это уже не действует VBA):

Public Type Fruit 
    Name As String 
    Color As String 
    Const Amount As Integer = 12 
End Type 

Поскольку вы хотите по умолчанию, но это должно быть изменяемый, я предлагаю использовать функцию для создания фруктов по умолчанию:

Public Type Fruit 
    Name As String 
    Color As String 
    Amount As Integer 
End Type 

Public Sub UseFruit() 
    Dim Banana As Fruit 
    Banana = getDefaultFruit 
    Banana.Name = "Banana" 
    Banana.Color = "Yellow" 
    Debug.Print Banana.Amount 'Prints 12 
End Sub 

Public Function getDefaultFruit() As Fruit 
    getDefaultFruit.Amount = 12 'Default 12 
End Function 
+1

Я не знаю, какую версию VBA вы используете, но Const in of Type недопустим! – tsolina

+0

Const inside Тип не работает, и отладчик VBA упоминает это. Если вам нужны константы, попробуйте перечислить: http: //www.cpearson.com/excel/Enums.aspx –

+0

@ErikG Я добавил заявление об отказе. Однако ответ по-прежнему стоит, поскольку соответствующий код является второй частью. – Blackhawk

Смежные вопросы