|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
В Class Modules Enter/Exit не существует... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 13:35 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.ProypmailЗаменил Enter на Change - работаетда, я тоже это для начала попробовал. Ну чтобы не лезть уже в какую-то экзотику, можно оставить обработчики событий на форме, но содержимое я бы все-таки вынес в отдельную процедуру, хоть это и одна строка (сегодня одна, завтра десять), а в самих обработчиках прописать вызов этой процедуры. Делаю процедуру в Module1: Код: vbnet 1. 2. 3. 4.
В событиях Enter на форме будет вызов этой процедуры, всего одно слово OpenCalendar С самой процедурой что-то не то. Не пойму, как программа поймет какое значение i для того или иного текстбокса использовать? С процедурами и функциями в примитивных примерах более менее понятно, но тут 8 текстбоксов и для всех надо задать одну процедуру, по-моему нереально. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 14:47 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Зачем там цикл? Она должна делать один конкретный вызов. То есть в процедуре так и будет только одна строка. А с каким именно текстбоксом работать - передается через параметр процедуры. Можно передавать его индекс, а можно передавать сам текстбокс. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 14:51 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.Pro, Одной строчкой можно только показать форму Form_SelectDate.Show для всех текстбоксов, в которых я пропишу вызов функции при событии Enter. Тут же происходит формат данных, полученных функцией для конкретного текстбокса (8 шт.), да ещё в ходе срабатывания функции Get_Date происходит показ формы Form_SelectDate.Show. Код: vbnet 1.
Просто форму показать, нажатие клавиши отследить и т.д. - это работает. Тут же конкретная привязка к текстбоксам Date1, Date2, Date3 и т.д. до Date8, чем универсальным их можно заменить? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 15:40 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Что у вас меняется в этой строчке для каждого обработчика? Только сам текстбокс. Вот его и сделайте параметром процедуры. Либо, как вариант Me.Controls("Date"+CStr(i)) и сделать i параметром процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 16:13 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.Pro, Help: Процедуры и функции VBA Выполнение программного кода процедуры или функции происходит при передаче ей управления. Передача управления (вызов) может осуществляться различными способами. В общем случае подпрограмма вызывается из программного кода с помощью специального оператора Са11 , в котором кроме данного ключевого слова указываются имя процедуры и фактические параметры вызова, список которых заключается в круглые скобки. Это всё, что в самоучителях пишут про параметры. Как я понял из справки в форме указываем функцию с параметром i=1: Код: vbnet 1. 2. 3.
Процедура в Module1: Код: vbnet 1. 2. 3.
--------------------------- Microsoft Visual Basic for Applications --------------------------- Compile error: Sub or Function not defined --------------------------- ОК Справка --------------------------- Я процедуру неправильно указываю в Date_Enter или саму процедуру OpCal неправильно записал? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 21:18 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailЭто всё, что в самоучителях пишут про параметры.Да неужели! http://computers.plib.ru/programming/Books.VBasic6/Chapter 5/ch40.htm http://computers.plib.ru/programming/Books.VBasic6/Chapter 5/ch39.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 21:44 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Почему-то у меня даже в списке нет этой процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 22:27 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
У меня еще путаница возникла, параметр и аргумент это одно и то же? И то и то в скобках пишут после названия процедуры, в чём разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 22:30 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Проблема с отсутствием процедуры в списке была из-за Privat Дальше, как я и предполагал, тело процедуры криво записано, а как правильно не понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 22:38 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailпараметр и аргумент это одно и то же?да. По большому счету аргумент - это со стороны вызова (по аналогии с аналогичным математическим понятием), а параметр это то же самое со стороны самой процедуры. ypmailПроблема с отсутствием процедуры в списке была из-за Privatвот я о чем и говорю, вместо того, чтобы прочитать про какие-то основы, будем биться головой об стену. Про Me то же самое - это основы. Me в VB - это ссылка на текущий класс или форму (которая, собственно, тоже является классом). В модуле никакого Me нет, потому что это не форма. Соответственно, либо надо использовать процедуру там, где есть Me, либо заменить Me на UserForm1 (чтобы ссылаться на форму) - это плохой вариант, либо вместо передачи индекса i передавать сам объект текстбокса, тогда ссылка на форму не понадобится в принципе. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 23:38 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.ProПро Me то же самое - это основы. Me в VB - это ссылка на текущий класс или форму (которая, собственно, тоже является классом). В модуле никакого Me нет, потому что это не форма. Соответственно, либо надо использовать процедуру там, где есть Me, либо заменить Me на UserForm1 (чтобы ссылаться на форму) - это плохой вариант, либо вместо передачи индекса i передавать сам объект текстбокса, тогда ссылка на форму не понадобится в принципе. Удалил я везде Me - ошибка. Если 8 раз прописать в модуле Me.Date1 = Format(Get_Date(Me.Date1, Now), "MMMM yyyy") Me.Date2 = Format(Get_Date(Me.Date2, Now), "MMMM yyyy") и т.д. до Date8, чтобы передавать сам объект текстбокса, то тоже ничего не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 13:59 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
покажите, что получилось - в модуле и на форме ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 14:04 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.Pro, ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2016, 09:16 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Вот ещё вариант. Никак не могу понять как передавать сам объект текстбокса... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2016, 09:38 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailНикак не могу понять как передавать сам объект текстбокса...Я так и не увидел в приложенных файлах попыток что-то передать. Текстбокс передается точно так же, как и Integer в примере у вас выше. Процедура Код: vbnet 1. 2. 3. 4. 5.
Вызов Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2016, 11:44 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Не пойму, что ему надо? Скобки все на месте. Может это не в модуле надо делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2016, 14:51 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Виноват, на синтаксис Си сбился. Но ведь голова для того, чтобы думать, а не просто копипастить (впрочем, я это, кажется, уже говорил) Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2016, 14:54 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Вот я и думал весь день, да видать думалка у меня не под то заточена, но есть надо, от которого никуда не деться ) В модуле прописал: Код: vbnet 1. 2. 3.
Работает! Надеюсь правильно записал? Вериницу энтеров для каждого поля так и придётся оставлять или есть варианты упрощения? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2016, 15:09 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailВериницу энтеров для каждого поля так и придётся оставлять?К сожалению, как мы выяснили ранее, это событие перехватываться нормально не хочет, и это не проблема программирования, а проблема где-то внутри самих объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2016, 16:12 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailНадеюсь правильно записал?Надеюсь, вы дадите вменяемое название процедуре все-таки. Это правило хорошего тона в программировании сильно облегчит жизнь со временем. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2016, 16:14 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.ProНадеюсь, вы дадите вменяемое название процедуре все-таки. Это правило хорошего тона в программировании сильно облегчит жизнь со временем. Это я сразу сделал после написания сообщения. Тоже не люблю всякие MyProcedure. Спасибо большое за помощь. Как будет время, буду копать календарик, чтобы месяцы и годы как-то поудобнее перелистывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2016, 15:50 |
|
|
start [/forum/topic.php?fid=60&msg=39278368&tid=2155475]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 144ms |
0 / 0 |