Просмотрел учебную базку от MS. Уже три года работаю с ассистентами. Удобства: 1. Не надо изощраться написанием навороченных MsgBox 2. Занимают всего несколько строк кода Неудобство: Не более пяти опций на пузырь. Ничего сверхестественного, все описано в Хэлпе. Отсюда вывод: "Господа программисты! Читайте папирусы." Public Function Blase() 'Точный перевод с немецкого ПУЗЫРЬ Dim B As Variant 'Инициализация пузыря Dim X As Integer 'Инициализация переменной Beep Set B = Assistant.NewBalloon With B 'Заголовок .Heading = "CREDIT CARS AUTOVERMIETUNG ASSISTENT" 'Выберите одну из опций .Text = "Wahlen Sie eine der folgenden Optionen:" .Labels(1).Text = "Option 1" .Labels(2).Text = "Option 2" .Labels(3).Text = "Option 3" X = .Show End With MsgBox X 'переменной Х присваиваются по этому примеру значения '1; 2 и 3 поле ОК имеет значение -1.Вот и все. End Function В следующую функцию, в качестве параметров передаются заголовок, строка приглашение и массив строк для выбора. Возвращает выбранное значение или –1 если «ОК». Public Function Blase(strHead As String, strText As String, _ ParamArray varLabel() As Variant) As Integer 'strHead - заголовок пузыря 'strText - строка приглашение 'varLabel() - массив строк для выбора разделенных "," не более 5-ти 'Возвращает номер выбранной позиции или -1 если нажата кнопка "ОК" Dim intI As Integer 'служебная Dim intMax As Integer 'служебная Dim B As Variant 'Инициализация пузыря Dim X As Integer 'Инициализация переменной Beep Set B = Assistant.NewBalloon With B .Heading = strHead 'Заголовок .Text = strText 'строка приглашение 'кол-во строк intMax = UBound(varLabel()) 'Пузырь позволяет работать только с 5-Ю строками If intMax > 5 Then intMax = 5 For intI = 1 To intMax .Labels(intI).Text = varLabel(intI) Next intI 'переменной Х присваивается значения индекса выдранной строки ' или -1 если нажата кнопка "OK". X = .Show End With Blase = X End Function
|