Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2012, 11:55   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Позиционирование на форме

Очередной ламерский вопрос: при вводе пользователем текста в textbox нужно проверить корректность ввода, и если что-то не так вывести сообщение и вернуться к редактированию. То есть нельзя уйти из textbox с неправильным значением. Решаю её так:
Код:
Private Sub tbПечатьЧислоКопий_AfterUpdate()
    If IsNumeric(tbПечатьЧислоКопий.Value) Then
        tbПечатьЧислоКопий.Value = Format(tbПечатьЧислоКопий.Value, "0")
    Else
        MsgBox "Следует ввести целое число"
        tbПечатьЧислоКопий.SetFocus
    End If
End Sub
Все бы ни чего, но фокусировка после вывода сообщения происходит не на нужном textbox'се, а на элементе со следующим номером TabIndex.

Что я делаю не так?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 28.02.2012, 12:25   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А я делаю так, что в текстбокс невозможно ввести ничего, кроме целого числа.
Пример кода можете посмотреть в этой программе:
http://excelvba.ru/programmes/Fill_Invoice
(так, в частности, сделано для полей «серия паспорта» и «номер паспорта»)

Или вообще отключаю ввод в текстбокс, предоставляя пользователю ScrollBar или SpinButton для изменения значения:



Ну и, конечно, можно воспользоваться комбобоксом, вбив в него значения от 1 до 50, и запретив редактирование значений (.style = styleList)
EducatedFool вне форума Ответить с цитированием
Старый 28.02.2012, 13:16   #3
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Спасибо. Интересно.
Еще вопрос: выводим список таблиц готовых для печати, а рядом два взаимоисключающих OptionButton: "Печатаем все таблицы", "Печатаем выбранные таблицы". Возможны следующие ситуации:
1. Выбрали один из OptionButton напрямую: в цикле снимаем или ставим галочки на все таблицы.
Код:
Private Sub obПечатьВсе_Click()
    For n = 1 To lvЛистыСписок.ListItems.Count
        lvЛистыСписок.ListItems(n).Checked = True
    Next n
End Sub
2. Снятие галочки с одного/нескольких таблиц: выбираем OptionButton "Печатаем выбранные таблицы".
3. Ставим галочки на все таблицы (если ранее сработало событие 2): выбираем OptionButton "Печатаем все таблицы".
Код:
Private Sub lvЛистыСписок_ItemCheck(ByVal Item As MSComctlLib.ListItem)
    If Item.Checked = False Then
        obПечатьТаблицы.Value = True
    Else
        For n = 1 To lvЛистыСписок.ListItems.Count
            If lvЛистыСписок.ListItems(n).Checked = False Then Exit For
        Next n
        If n > lvЛистыСписок.ListItems.Count Then obПечатьВсе.Value = True
    End If
End Sub
При событиях 2 и 3 установка значений OptionButton происходит командой аналогичной "obПечатьВсе.Value = False".

Проблема заключается в том что при событиях 2 и 3 срабатывают действия для события 1 как будто произошел прямой щелчок. А нужно просто включить тот или иной OptionButton.
Пытался для отслеживания события 1 использовать разные события "Clik" и "Change". Срабатывают всегда оба события.

Как быть?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 28.02.2012, 14:32   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Вопрос решился использованием события "_BeforeUpdate".
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Позиционирование DeZoX HTML и CSS 2 03.01.2012 15:40
Позиционирование Syltan HTML и CSS 0 25.03.2010 19:15
Позиционирование serg_sk HTML и CSS 0 18.03.2010 20:42
Про позиционирование Risk07 HTML и CSS 6 18.05.2009 12:58
Позиционирование элемента vlad2423 HTML и CSS 7 09.03.2009 20:28