Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Enter для textbox срабатывает только один раз / 25 сообщений из 97, страница 1 из 4
18.05.2016, 09:48
    #39237931
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
Есть форма с несколькими textbox. Перемешаюсь по ним клавишей Tab. Нужно, чтобы при появлении фокуса на TextBox3 открывался календарь. Для этого использую событие Enter:
Код: vbnet
1.
2.
3.
Private Sub DatePer1_Enter()
Me.TextBox3 = Format(Get_Date(Me.DatePer1, Now), "MMMM yyyy")    ' выбор даты из календаря
End Sub



Запускаю форму, перемещаюсь по Tab TextBox1, TextBox2, TextBox3. На TextBox3 выскакивает календарь. Всё нормально.
Ставлю курсор на TextBox2, нажимаю снова Tab, курсор переходит на TextBox3, но календарь уже не появляется. Почему Enter срабатывает только 1 раз? Как сделать, чтобы при каждом переходе к TextBox3 появлялся календарь?
...
Рейтинг: 0 / 0
18.05.2016, 09:48
    #39237932
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
DatePer это TextBox3, не поправил в коде
...
Рейтинг: 0 / 0
18.05.2016, 10:05
    #39237953
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
ypmailНужно, чтобы при появлении фокуса на TextBox3 открывался календарь. Для этого использую событие Enter:
А тебе не кажется, что если "при появлении фокуса", то надо использовать TextBox_GotFocus?
...
Рейтинг: 0 / 0
18.05.2016, 10:26
    #39237981
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
AkinaА тебе не кажется, что если "при появлении фокуса", то надо использовать TextBox_GotFocus?

Из справки:
События Enter, Exit
Office 2013 and later

....

Замечания

События Enter и Exit подобны событиям GotFocus (получение фокуса) и LostFocus (потеря фокуса) в Visual Basic. В отличии от событий GotFocus и LostFocus, события Enter и Exit не происходят тогда, когда форма получает или теряет фокус.

+ в VBA у меня нет таких событий в списке выбора события.
+ пробовал в самом коде писать GotFocus в виде TextBox_GotFocus() - не работает
...
Рейтинг: 0 / 0
18.05.2016, 10:27
    #39237982
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
См. название темы. VBA
...
Рейтинг: 0 / 0
18.05.2016, 11:30
    #39238070
hclubmk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
ypmailИз справки:
События Enter, Exit
Office 2013 and later Что за приложение? Какая версия? (в 2003 Word, Excel) эти события присутствуют
...
Рейтинг: 0 / 0
18.05.2016, 11:38
    #39238078
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
ypmailСм. название темы. VBA
Лучше см. название раздела: Visual Basic .
А с VBA надо было идти в раздел Microsoft Office.
...
Рейтинг: 0 / 0
18.05.2016, 11:44
    #39238086
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
ypmail,

выложи тестовый пример - ответ будет гораздо быстрее
...
Рейтинг: 0 / 0
18.05.2016, 14:03
    #39238242
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
Shocker.Pro,
пример
...
Рейтинг: 0 / 0
18.05.2016, 14:04
    #39238245
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
ypmail,
файл rar не прикрепляется
...
Рейтинг: 0 / 0
18.05.2016, 14:15
    #39238257
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
Вроде файл с примером прикрепился со второй попытки. Извинтиляюсь, что не в ту тему написал, просто увидел, что есть уже такие темы VBA и бла-бла-бла, вот и тоже создал свою в этой ветке.
...
Рейтинг: 0 / 0
18.05.2016, 14:26
    #39238268
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
О боже, дикий треш и ужас!
Вы что-нибудь слышали про циклы, про подпрограммы, функции?
Если потребуется обработать сто значений, вы сто раз напишете один и тот же код?

Я не нашел там никакой обработки события Enter.

Уберите все лишнее, сделайте файл, из которого понятно, что именно не получается
...
Рейтинг: 0 / 0
18.05.2016, 14:37
    #39238287
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
Shocker.Pro,
Переделал. Прямо вначале кода вариант с Enter, который срабатывает только один раз.
В конце кода вариант с MousUp, который срабатывает каждый раз.

По Вашему замечанию: я бы с удовольствием упростил код, если бы знал как это делать. Спросить не у кого, а сам я только учусь. Этот-то код собирал не одну неделю, чтобы хоть как-то работало.
...
Рейтинг: 0 / 0
18.05.2016, 14:52
    #39238315
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
Занимательный прикол.
Если тектбокс не располагать в фрейме, то все нормально.
...
Рейтинг: 0 / 0
18.05.2016, 15:28
    #39238364
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
Shocker.ProЗанимательный прикол.
Если тектбокс не располагать в фрейме, то все нормально.

Без фрейма работает. Я могу убрать фреймы, но как тогда нарисовать таблицу стандартными средствами, не подключая никаких дополнительных контролов?
...
Рейтинг: 0 / 0
18.05.2016, 15:32
    #39238367
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
Попробовал событие повесить на фрейм - работает как надо! Можно ничего не переделывать, просто вешать Enter на фрейм, а не на текстбокс.
...
Рейтинг: 0 / 0
18.05.2016, 15:33
    #39238371
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
Спасибо!!!

Кстати, может подскажете как код упростить? Как он правильно пишется?
...
Рейтинг: 0 / 0
18.05.2016, 15:44
    #39238389
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
ypmailБез фрейма работает. Я могу убрать фреймы, но как тогда нарисовать таблицу стандартными средствами, не подключая никаких дополнительных контролов?Я не понимаю, в чем проблема. Для чего там вообще используются фреймы?ypmailКстати, может подскажете как код упростить? Как он правильно пишется?Первое правило в похожем случае - забыть про копипасту. Любой повторяющийся алгоритм должен быть написан один раз и оформлен в виде процедуры, класса и т.п.
...
Рейтинг: 0 / 0
18.05.2016, 19:54
    #39238595
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
Shocker.ProЯ не понимаю, в чем проблема. Для чего там вообще используются фреймы?
Чтобы получилась таблица :-)
Shocker.ProПервое правило в похожем случае - забыть про копипасту. Любой повторяющийся алгоритм должен быть написан один раз и оформлен в виде процедуры, класса и т.п.
Я пытался, но ничего не получилось, мне бы примерчик какой-нибудь посмотреть. На примере какого-нибуд куска моего кода, чтобы понять как это делается.
...
Рейтинг: 0 / 0
18.05.2016, 20:19
    #39238604
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
ypmailShocker.ProЯ не понимаю, в чем проблема. Для чего там вообще используются фреймы?
Чтобы получилась таблица :-)Ответ непонятен. Что мешает составить ее просто из текстбоксов?
ypmailShocker.ProПервое правило в похожем случае - забыть про копипасту. Любой повторяющийся алгоритм должен быть написан один раз и оформлен в виде процедуры, класса и т.п.
Я пытался, но ничего не получилось, мне бы примерчик какой-нибудь посмотреть. На примере какого-нибуд куска моего кода, чтобы понять как это делается.Учиться нужно по учебникам, а не по примерам. Пример не даст системных знаний.
...
Рейтинг: 0 / 0
18.05.2016, 20:22
    #39238606
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
ypmailЯ пытался, но ничего не получилосьНе получилось напечатать не одной буквы? Не получилось включить компьютер? Это не подход. Не получилось что-то конкретное - это и можно спросить. На конкретный вопрос будет конкретный ответ. А на беспредметные вопросы будет ответ - читай учебник. )
...
Рейтинг: 0 / 0
19.05.2016, 09:32
    #39238785
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
Shocker.Proypmailпропущено...

Чтобы получилась таблица :-)Ответ непонятен. Что мешает составить ее просто из текстбоксов?
Точно такую же таблицу из текстбоксов не сделаешь в плане оформления.
Shocker.Proypmailпропущено...
Я пытался, но ничего не получилось, мне бы примерчик какой-нибудь посмотреть. На примере какого-нибуд куска моего кода, чтобы понять как это делается.Учиться нужно по учебникам, а не по примерам. Пример не даст системных знаний.
Другого ответа и не ожидал.По непойми каким языком с кучей непонятных терминов написанным учебникам через пару лет точно научусь, а пока как могу так и делаю, пусть хоть так работает, чем вообще никак.
...
Рейтинг: 0 / 0
19.05.2016, 12:37
    #39238991
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
ypmailТочно такую же таблицу из текстбоксов не сделаешь в плане оформления.Вот это мне и непонятно. У текстбокса точно такие же настройки границы, как и у фрейма. Может что-то не понимаю, может на каком-нить Win10 и каком-нить Офисе2017 это выглядит иначе...
На скриншоте две ячейки выполнены с помощью текстбоксов без фреймов. Найдете какие?
...
Рейтинг: 0 / 0
19.05.2016, 12:44
    #39238999
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
ypmailДругого ответа и не ожидал.По непойми каким языком с кучей непонятных терминов написанным учебникам через пару лет точно научусь, а пока как могу так и делаю, пусть хоть так работает, чем вообще никак.Что вам мешает выбрать учебник, написанный понятным языком? Не видел книжного магазина, где не дают ознакомиться с изданием перед покупкой - хоть часами сиди изучай.
Согласитесь, пересказывать учебник в топике форума - глупо.
Хотите, можно курсы организовать, мастер-класс... Но это не бесплатно же. Здесь мы все-таки отвечаем на конкретные вопросы, а не на "научите меня программировать".

И еще. Вы боитесь потратить время на чтение учебника, но я вас уверяю, чем дольше вы будете писать плохой код, тем больше он будет тянуть вас ко дну, и в конечном итоге вы потратите больше времени, чем на то, чтобы изначально разобраться и написать хорошо.
...
Рейтинг: 0 / 0
19.05.2016, 14:11
    #39239105
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Enter для textbox срабатывает только один раз
По ячейкам: 3 и 5, угадал? Попробую, правда заголовки колонок наверное придется оставить в Label внутри фреймов, иначе придётся как-то делать вывод текста по умолчанию в textbox с форматированием, пока для меня это сложно.

По науке: я и сам понимаю разницу между "подскажи" и "сделай за меня". Я также сторонник компактных кодов, но пока для меня это сложно, разберусь со временем. Я с VBA знаком от силы недели 2-3, и то методом научного втыка. В своём коде пробовал один раз объявлять переменную, а потом присваивать закладкам значения (Dim rng), но код перестал работать. Поэтому я вернулся к копипасту и каждый раз объявлял переменную для вставки каждой закладки. Вот и получилось:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Set rng = bm("NumberFirst1").Range 'присваиваем переменной rng ссылку на закладку "NumberFirst1"
rng.Text = Me.NumberFirst1.Text  'определяем новый текст закладки
bm.Add "NumberFirst1", rng   'заменяем закладку "NumberFirst1"
Set rng = bm("NumberFirst11").Range
rng.Text = Me.NumberFirst1.Text
bm.Add "NumberFirst11", rng

Set rng = bm("NumberFirst2").Range
rng.Text = Me.NumberFirst2.Text
bm.Add "NumberFirst2", rng
Set rng = bm("NumberFirst22").Range
rng.Text = Me.NumberFirst2.Text
bm.Add "NumberFirst22", rng



Как правильно записать, чтобы объявить один раз переменную и потом несколько раз использовать не нашел, поэтому пока оставил так.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Enter для textbox срабатывает только один раз / 25 сообщений из 97, страница 1 из 4
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]