|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailНа SQL написал ... и всё понятно ... а тут какой-то тупой язык (или я :-))Вы заполняете массив одними значениями. Потом тот же массив другими значениями. Хорошо, вот вам пример на SQL Код: sql 1. 2. 3. 4.
У вас в таблице теперь хранятся все четыре числа 5,6,7,8? Или только 7,8 и язык SQL такой же тупой? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 15:45 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Я понял, что у меня учитываются только 8 текстбоксов из 16, т.к. i принимает значения от 1 до 8. Нужно для левой части другую переменную, которая бы принимала значения от 1 до 16, а в правой части оставить i, снова проблема как это прописать? Пока родил это: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Дальше буду думать как это заставить работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 15:59 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2.
Это называется вложенный цикл. Выполнится он 8*16=128 раз. Зачем? Но главный косяк у вас все там же. Вы пишете два подряд оператора: Код: vbnet 1. 2.
и прямую аналогию с Код: sql 1. 2.
никак не хотите видеть ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 16:19 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailНужно для левой части другую переменную, которая бы принимала значения от 1 до 16Я уже писал выше - переменная все та же - массив aoTxtBxes, только не 1 To 8, а 1 To 16 Вы сначала подумайте, как вы собираетесь располагать в этом массиве свои текстбоксы. Разумных вариантов ровно два: NumberFirst1 NumberFirst2 ... NumberFirst8 NumberLast1 NumberLast2 ... NumberLast8 или NumberFirst1 NumberLast1 NumberFirst2 NumberLast2 ... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2016, 16:22 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.ProypmailНужно для левой части другую переменную, которая бы принимала значения от 1 до 16Я уже писал выше - переменная все та же - массив aoTxtBxes, только не 1 To 8, а 1 To 16 Вы сначала подумайте, как вы собираетесь располагать в этом массиве свои текстбоксы. Разумных вариантов ровно два: NumberFirst1 NumberFirst2 ... NumberFirst8 NumberLast1 NumberLast2 ... NumberLast8 или NumberFirst1 NumberLast1 NumberFirst2 NumberLast2 ... массив у меня 1 To 16 Располагать планирую как NumberFirst1 NumberLast1 NumberFirst2 NumberLast2 UPDATE A SET B=5, C=6 UPDATE A SET B=7, C=8 В моём случае тоже надо использовать Update? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2016, 15:32 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailВ моём случае тоже надо использовать Update?Нет, вы же сами писали что мол в SQL все просто, в VB все сложно. Поэтому я вам привел пример на языке SQL, чтобы было понятно. В данном случае используется операция присваивания "=". ypmailРасполагать планирую как NumberFirst1 NumberLast1 NumberFirst2 NumberLast2ок, вот, собственно, есть код: Код: vbnet 1. 2. 3. 4.
Включаем знание школьной математики и думаем, какую формулу нужно применить к i в выделенных местах, чтобы получить нужные значения, а именно 1 и 2 при первом проходе цикла, 3 и 4 на втором и т.д. до 16. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2016, 15:39 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
2i-1 и 2i Если у меня в Class Modules KeyPress, то работает Код: vbnet 1. 2. 3.
Пробую вместо этого использовать в Class Modules указанный выше вариант - не работает (выдаёт ошибку и выделяет IntPos) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
В коде формы кусок был рабочим, правда у меня тогда везде вместо oTxtBx было NumberFirst1. Раз я использую в классе для всех текстбоксов, то заменил на oTxtBx. IntPos как я понял определяет позицию курсора, почему в классе не хочет работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 14:08 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailвыдаёт ошибкутекст ошибки сообщите или требуется угадывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 15:59 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.Pro, variable is not defined Когда указываю конкретное имя текстбокса NumberFirst1 все работает (но это только в коде формы), а когда вместо конкретного имени использую oTxtBx да ещё пытаюсь этот кусок кода использовать в классе, то тут облом. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 19:35 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Покажите полный код класса ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 19:43 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.Pro, В сообщении выше писал что было и чем заменил в класссе Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2016, 18:14 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Если variable is not defined значит variable is not defined Не хотите показать полный текст класса - ищите ошибку сами ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2016, 18:38 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Через KeyPress работает. Удаляю кусок кода с KeyPress и вместо него оставляю, тот, что ниже (убираю везде ') - не работает. Файл прилагаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 12:49 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Ну так правильно, вы ж первой строкой требуете обязательного объявления всех переменных (и это правильно), но не объявляете их, о чем вам и сообщает компилятор. Освоить Ctrl+C-Ctrl+V мало, надо ж разобраться, как работает скопипастченный код. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 13:27 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.Pro, Спасибо за помощь! Где ещё мне упростить код? Наверное с помощью классов нужно избавиться от копипаста тут?: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 14:07 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailСпасибо за помощь!Пожалуйста, но только расстраивает, что похерив рекомендацию потратить пару недель на учебник вы будете тратить месяцы на скачки по граблям и биться головой об стену. ypmailГде ещё мне упростить код?Получить название месяца из числа: Код: vbnet 1.
- соответственно, заполнение комбобокса сделать в цикле. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 14:29 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Так а, собственно, как в UserForm1.Ok _Click как все было так и осталось, ничего не упоростили ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 14:50 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.Pro, Что толку с учебника, если в нём нет моего примера, пока я там изучаю всё подряд, не имеющее отношение к моей задаче, меня с работы уволят. Я не программист, а ИТР, хотел немного автоматизировать свою работу. Сам вынужден этим заниматься, т.к. айтишникам платят только за обслуживание потребностей высшего руководства, но никак не узких специалистов. Если я вместо основной работы целыми днями буду изучать программирование, то точно уволят. Дома зимой учиться ещё куда ни шло, а летом - слишком много дел, ещё и жена бросит пока книжки читаю вместо домашних дел :-) Я рад бы всему научиться, да слишком уж цена высока для такой науки. Пусть лучше все будет как есть, работает и ладно. А то жизнь-то одна, просижу в учебниках и окажусь на мусорке с бомжами. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 14:53 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.ProТак а, собственно, как в UserForm1.Ok _Click как все было так и осталось, ничего не упоростили Сложно пока для понимания, да и основной работы хватает. Пожалуй пока заброшу до лучших времен. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 14:55 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Тут надо было или специально на программиста идти учиться в свое время и сделать это основной профессией или сидеть на пенсии и от скуки самообразовываться, а так голопом по европам всего не схватишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 14:58 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
И всё же я уже подсел на это дело, не могу без Вашего Простоквашино ))) Появилась свободная минутка, и снова так и подмывает доработать код. Немного поправил код на UserForm - стало гораздо компактнее и красивее. Воткнулся с текстбоксами дат, хотел событие Enter тоже разместить в классе, т.к. оно одинаковое для 8 текстбоксов, но почему-то оно не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 10:14 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailНемного поправил код на UserForm - стало гораздо компактнее и красивее.вторым шагом - почему бы три цикла не объединить теперь в один? Код: vbnet 1. 2.
с циклами вы так и не разобрались до конца. Зачем вам оба массива по 24 элемента, если в одном хранится 16 элементов, а в другом - 8? Что касается Change - действительно не хочет это событие перехватываться классом. У меня крайне мало опыта работы с контролами и формами MSForms, подозреваю, что как-то связано с тем, что если Change - это "родное" событие текстбокса, то работу Enter (то есть навигацию по контролам) обеспечивает сама форма и где-то тут у них недоработочка. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 13:05 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
Shocker.ProypmailНемного поправил код на UserForm - стало гораздо компактнее и красивее.вторым шагом - почему бы три цикла не объединить теперь в один?Имеете ввиду в Private Sub Ok_Click()? Код: vbnet 1. 2.
с циклами вы так и не разобрались до конца. Зачем вам оба массива по 24 элемента, если в одном хранится 16 элементов, а в другом - 8? Ну почему же, изначально я как раз так и пробовал. Не получилось, событие Enter не работает, потом уже начал извращаться над кодом, приведя его к 1 To 24. Изначально код был такой: Код: vbnet 1. 2.
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Что касается Change - действительно не хочет это событие перехватываться классом. У меня крайне мало опыта работы с контролами и формами MSForms, подозреваю, что как-то связано с тем, что если Change - это "родное" событие текстбокса, то работу Enter (то есть навигацию по контролам) обеспечивает сама форма и где-то тут у них недоработочка.Заменил Enter на Change - работает (если поле не заблокировано, у меня первое разблокировано), с Enter ни в какую. Оставить как было (для каждого поля отдельно прописывать событие Enter)? Или есть ещё какие-то варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 13:24 |
|
VBA Enter для textbox срабатывает только один раз
|
|||
---|---|---|---|
#18+
ypmailЗаменил Enter на Change - работаетда, я тоже это для начала попробовал. Ну чтобы не лезть уже в какую-то экзотику, можно оставить обработчики событий на форме, но содержимое я бы все-таки вынес в отдельную процедуру, хоть это и одна строка (сегодня одна, завтра десять), а в самих обработчиках прописать вызов этой процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 13:35 |
|
|
start [/forum/topic.php?fid=60&msg=39251274&tid=2155475]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 350ms |
total: | 482ms |
0 / 0 |